הפתרון המתבקש מאליו לסינון מספרים שלמים מטבלה הוא להשוות אותם לערך השלם שלהם, ולהציג רק את אלו ששווים.
דוגמה מאין זו הופיעה בפוסט הזה:
DECLARE @TT TABLE (id int,
salary Decimal(10,3));
INSERT INTO @TT VALUES (1, 23.44);
INSERT INTO @TT VALUES (2, 21.00);
INSERT INTO @TT VALUES (3, 20.00);
INSERT INTO @TT VALUES (4, 53.30);
INSERT INTO @TT VALUES (5, 11.00);
SELECT *
FROM @TT
WHERE ROUND(salary, 10)-FLOOR(ROUND(salary, 10))=0;
האם אפשר לעשות זאת "במכה אחת" בלי לעגל ולהשוות בין הערך לפני ואחרי?
DECLARE @TT TABLE (id int,
salary Decimal(10,3));
INSERT INTO @TT VALUES (1, 23.44);
INSERT INTO @TT VALUES (2, 21.00);
INSERT INTO @TT VALUES (3, 20.00);
INSERT INTO @TT VALUES (4, 53.30);
INSERT INTO @TT VALUES (5, 11.00);
SELECT *
FROM @TT
WHERE salary%1=0;
קצת יותר אלגנטי, ויעיל באותה מידה.
למען הגילוי הנאות עלי להודות שבדוגמה המקורית משתמשים ב-Float ולו לא ניתן לבצע מודולו 1, אלא רק לסוגי נתונים כמו Decimal או Money.