תודה לחבר הקהילה וכותב באתר גרי רשף שתרם את הרעיון.
Select * From T Union Select * From T;
--SQL Server Version: Select * From T Except Select Top 1 * From T; --Oracle Version: Select * From T Minus Select * From T where rownum <= 1
3. כמה שורות מינימום וכמה שורות מקסימום תחזיר הפקודה הבאה?
Select * From T T1 Inner Join T T2 On T1.*=T2.*;
בטבלה FF יש שדה F2 המכיל שמות אנשים – שם פרטי ושם משפחה מופרדים על ידי קו תחתון (למשל roni_vered).
select * from t where name like 'Roni_%'
אם לא, למה, ואיך פותרים זאת ?
כדי להשתתף באתגר יש להירשם לאתר ולשלוח את הפתרונות ל-ildba@brillix.co.il
שיהיה בהצלחה!
צוות אתר ilDBA.
——————————————————————————————————————————————–
עידכון – 1.8.2011
זוכה האתגר הוא דודי מרקוביץ', מזל טוב דודי!
פיתרון האתגר
- בין 1 (אם כל השורות זהות – מכיוון ש-Union מבצע במקביל Distinct) ל-100 שורות (אם אין שורות זהות כלל).
- בין 0 (אם כל השורות זהות) ל-99 שורות (אם אין שורות זהות).
- בין 0 (אם יש עמודה שכולה Nulls ואז השיוויון לא יתקיים) ל-10,000 שורות (אם כל השורות זהות וללא Nulls).
- השאילתה שגויה. השאילתה במצב הנוכחי שלה יכולה להחזיר גם אנשים ששמם Ronit לדוגמא, מכיוון שהתו '_' הוא Wild-char.
על מנת להחזיר את כל האנשים ששמם רוני יש להריץ את השאילתה:
select * from t where name like 'Roni\_%' escape '\' OR select * from t where name like 'Roni!_%' ESCAPE '!'