• בלוג
  • סדרת SQL בסיסי - פוסט 17 - פונקציות לעבודה עם מספרים

סדרת SQL בסיסי - פוסט 17 - פונקציות לעבודה עם מספרים

26/08/2024

ביטויים חשבוניים היו רק ההתחלה ול SQL יש עוד כמה פונקציות שיכולות לעזור לנו בעבודה עם מספרים.

1. עיגול לשלמים - round, ceil, floor

קטגוריה ראשונה של פונקציות היא העיגול לשלמים ופה יש לנו בחירה בין שלוש פונקציות: הפונקציה floor מחזירה את המספר השלם הגדול ביותר שקטן מהשבר שהעברנו לה, הפונקציה ceil מחזירה את המספר השלם הקטן ביותר שגדול מהשבר שהעברנו לה והפונקציה round תחזיר את המספר השלם הקרוב ביותר לערך שהעברנו לה. כמה דוגמאות:

  1. מחזיר 2, בעצם מוריד את החלק שאחרי הנקודה:
select floor(2.6)
  1. מחזיר 3, כי לוקח את המספר השלם הקטן ביותר שגדול מהערך שהעברנו:
select ceil(2.6)
  1. מחזיר 3, כי השבר גדול או שווה לחצי:
select round(2.6)
  1. מחזיר 2, כי השבר קטן מחצי:
select round(2.2)

שימו לב שב SQL Server הפונקציה ceil נקראת ceiling.

2. שורש וחזקה

הפונקציה sqrt מחזירה שורש ו power מחזירה את המספר בחזקה.

  1. לדוגמה שורש 9 הוא 3:
select sqrt(9);
  1. דוגמה נוספת, 2 בחזקת 3 נותן 8:
select pow(2, 3);

אנחנו יכולים להשתמש בפונקציות אלה בכל חלק של השאילתה - גם בהצגת עמודות, גם בעדכון עמודות וגם ב where.

שימו לב SQL Server משתמש בשם power בשביל פונקציית החזקה.

3. מספר אקראי

הפונקציה random מחזירה מספר אקראי למשל:

select random()

החזירה לי את הערך -823852169001874814. בעזרת קצת מתמטיקה אני יכול להפוך את המספר לערך אקראי בכל טווח שאני רוצה, לדוגמה כך אני מקבל מספר אקראי בין 0 ל 99 כולל:

select MOD(abs(random()), 100);

הפונקציה abs מחזירה ערך שלם, כלומר מחזירה את המספר בלי סימן המינוס (אם היה בו), והפונקציה mod מחזירה את שארית החלוקה. לכן אנחנו לוקחים מספר אקראי, מורידים לו את המינוס, מנסים לחלק ב 100 ולוקחים את השארית וזה מספר אקראי בין 0 ל 99 כולל.

אנחנו יכולים למצוא שימוש מעניין למספרים אקראיים כשנחבר אותם עם order. פקודת order by מאפשרת לנו לקבוע את מיון התוצאות שנקבל, ואם נבחר שהמיון יהיה לפי מספר אקראי נקבל תמיד תוצאות אקראיות:

select * from customers order by random();

שימו לב הפונקציה random נקראת ב SQL Server בשם rand.