SQL數字函數主要用于數值操作和/或數學計算。 下表詳述了數字函數:
返回數值表達式的反正弦值。 如果值不在-1到1的范圍內,則返回NULLName | Description |
---|---|
ABS() | 返回數值表達式的絕對值 |
ACOS() | 返回數值表達式的反余弦值。 如果值不在-1到1的范圍內,則返回NULL |
ASIN() | 返回數值表達式的反正弦值。 如果值不在-1到1的范圍內,則返回NULL |
ATAN() | 返回數值表達式的反正切 |
ATAN2() | 返回傳遞給它的兩個變量的反正切。 |
BIT_AND() | 返回表達式中的按位AND所有位。 |
BIT_COUNT() | 返回傳遞給它的二進制值的字符串表示形式 |
BIT_OR() | 返回傳遞的表達式中所有位的按位或。 |
CEIL() | 返回不小于傳遞的數字表達式的最小整數值 |
CEILING() | 返回不小于傳遞的數字表達式的最小整數值 |
CONV() | 將數值表達式從一個基數轉換為另一個基數。 |
COS() | 返回傳遞的數值表達式的余弦值。 數值表達式應以弧度表示。 |
COT() | 返回傳遞的數值表達式的余切。 |
DEGREES() | 返回從弧度轉換為度的數值表達式。 |
EXP() | 返回自然對數(e)的底數增加到通過數字表達式的權力。 |
FLOOR() | 返回不大于傳遞的數字表達式的最大整數值。 |
FORMAT() | 返回四舍五入到小數位數的數字表達式。 |
GREATEST() | 返回輸入表達式的最大值。 |
INTERVAL() | 取多個表達式exp1,exp2和exp3等等,如果exp1小于exp2則返回0,如果exp1小于exp3則返回1,以此類推。 |
LEAST() | 給定兩個或更多個時返回最小值輸入。 |
LOG() | 返回傳遞的數字表達式的自然對數。 |
LOG10() | 返回傳遞的數字表達式的以10為底的對數。 |
MOD() | 通過使用另一個表達式返回一個表達式的余數。 |
OCT() | 返回傳遞的數字表達式的八進制值的字符串表示形式。 如果傳遞的值為NULL,則返回NULL。 |
PI() | 返回pi的值 |
POW() | 返回一個表達式的值增加到另一個表達式的權力 |
POWER() | 返回一個表達式的值增加到另一個表達式的權力 |
RADIANS() | 返回從度轉換為弧度的傳遞表達式的值。 |
ROUND() | 返回四舍五入為整數的數值表達式。 可用于將表達式舍入為多個小數點 |
SIN() | 返回以弧度給出的數值表達式的正弦值。 |
SQRT() | 返回數值表達式的非負平方根。 |
STD() | 返回數值表達式的標準偏差。 |
STDDEV() | 返回數值表達式的標準偏差。 |
TAN() | 返回以弧度表示的數值表達式的正切值。 |
TRUNCATE() | 返回截斷為exp2小數位的數字exp1。 如果exp2為0,則結果將不具有小數點。 |
ABS()函數返回X的絕對值。請參考以下示例:
SQL> SELECT ABS(2); +---------------------------------------------------------+ | ABS(2) | +---------------------------------------------------------+ | 2 | +---------------------------------------------------------+ 1 row in set (0.00 sec) SQL> SELECT ABS(-2); +---------------------------------------------------------+ | ABS(2) | +---------------------------------------------------------+ | 2 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回X的反余弦值。X的值必須-1或者1之間,否則將返回NULL之間。請參考下面的例子:
SQL> SELECT ACOS(1); +---------------------------------------------------------+ | ACOS(1) | +---------------------------------------------------------+ | 0.000000 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
ASIN()函數返回X的反正弦值。X的值必須在-1到1的范圍內,否則將返回NULL:
SQL> SELECT ASIN(1); +---------------------------------------------------------+ | ASIN(1) | +---------------------------------------------------------+ | 1.5707963267949 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回X的反正切:
SQL> SELECT ATAN(1); +---------------------------------------------------------+ | ATAN(1) | +---------------------------------------------------------+ | 0.78539816339745 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回兩個參數的反正切:X和Y。它類似于Y / X的反正切,除了兩者的符號用于查找結果的象限:
SQL> SELECT ATAN2(3,6); +---------------------------------------------------------+ | ATAN2(3,6) | +---------------------------------------------------------+ | 0.46364760900081 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
BIT_AND函數返回表達式中所有位的按位AND。 基本前提是,如果兩個相應的位相同,則按位與操作將返回1,而如果它們不同,則按位與操作將返回0.該函數本身返回一個64位整數值。 如果沒有匹配項,則它將返回18446744073709551615.以下示例在由汽車的MAKER分組的PRICE列上執(zhí)行BIT_AND函數:
SQL> SELECT MAKER, BIT_AND(PRICE) BITS FROM CARS GROUP BY MAKER +---------------------------------------------------------+ |MAKER BITS | +---------------------------------------------------------+ |CHRYSLER 512 | |FORD 12488 | |HONDA 2144 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
BIT_COUNT()函數返回在numeric_value中有效的位數。 以下示例演示使用BIT_COUNT()函數來返回數字范圍的活動位數:
SQL> SELECT BIT_COUNT(2) AS TWO, BIT_COUNT(4) AS FOUR, BIT_COUNT(7) AS SEVEN +-----+------+-------+ | TWO | FOUR | SEVEN | +-----+------+-------+ | 1 | 1 | 3 | +-----+------+-------+ 1 row in set (0.00 sec)
BIT_OR()函數返回表達式中所有位的按位或。 位或函數的基本前提是,如果相應的位匹配則返回0,如果對應的位不匹配則返回1。 該函數返回一個64位整數,如果沒有匹配的行,則返回0.以下示例在CARS表的PRICE列上執(zhí)行BIT_OR()函數,按MAKER分組:
SQL> SELECT MAKER, BIT_OR(PRICE) BITS FROM CARS GROUP BY MAKER +---------------------------------------------------------+ |MAKER BITS | +---------------------------------------------------------+ |CHRYSLER 62293 | |FORD 16127 | |HONDA 32766 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
這些函數返回不小于X的最小整數值。請參考以下示例:
SQL> SELECT CEILING(3.46); +---------------------------------------------------------+ | CEILING(3.46) | +---------------------------------------------------------+ | 4 | +---------------------------------------------------------+ 1 row in set (0.00 sec) SQL> SELECT CEIL(-6.43); +---------------------------------------------------------+ | CEIL(-6.43) | +---------------------------------------------------------+ | -6 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
CONV()函數的目的是在不同的數字之間轉換數字。 該函數返回從from_base轉換為to_base的值N的字符串。 最小基數值為2,最大值為36.如果任何參數為NULL,則函數返回NULL。 參考以下示例,將數字5從基數16轉換為基數2:
SQL> SELECT CONV(5,16,2); +---------------------------------------------------------+ | CONV(5,16,2) | +---------------------------------------------------------+ | 101 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回X的余弦。參考以下示例:
SQL>SELECT COS(90); +---------------------------------------------------------+ | COS(90) | +---------------------------------------------------------+ | -0.44807361612917 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回X的余切。參考以下示例:
SQL>SELECT COT(1); +---------------------------------------------------------+ | COT(1) | +---------------------------------------------------------+ | 0.64209261593433 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回從弧度轉換為度的X的值。參考以下示例:
SQL>SELECT DEGREES(PI()); +---------------------------------------------------------+ | DEGREES(PI()) | +---------------------------------------------------------+ | 180.000000 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
該函數返回e(自然對數的底)的值增加到X的冪。參考以下示例:
SQL>SELECT EXP(3); +---------------------------------------------------------+ | EXP(3) | +---------------------------------------------------------+ | 20.085537 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回不大于X的最大整數值。參考以下示例:
SQL>SELECT FLOOR(7.55); +---------------------------------------------------------+ | FLOOR(7.55) | +---------------------------------------------------------+ | 7 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
FORMAT()函數用于以以下格式格式化數字X:###,###,###。##截斷到D個小數位。 以下示例演示了FORMAT()函數的使用和輸出:
SQL>SELECT FORMAT(423423234.65434453,2); +---------------------------------------------------------+ | FORMAT(423423234.65434453,2) | +---------------------------------------------------------+ | 423,423,234.65 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
GREATEST()函數返回輸入參數集合(n1,n2,n3等)中的最大值。 以下示例使用GREATEST()函數從一組數值中返回最大數字:
SQL>SELECT GREATEST(3,5,1,8,33,99,34,55,67,43); +---------------------------------------------------------+ | GREATEST(3,5,1,8,33,99,34,55,67,43) | +---------------------------------------------------------+ | 99 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
INTERVAL()函數將N的值與值列表(N1,N2,N3等)進行比較。 如果N <N1,該函數返回0,如果N <N2,則返回1,如果N <N3,則返回2,等等。 如果N為NULL,它將返回.1。 值列表必須采用N1 <N2 <N3的形式,才能正常工作。 以下代碼是INTERVAL()函數如何工作的一個簡單示例:
SQL>SELECT INTERVAL(6,1,2,3,4,5,6,7,8,9,10); +---------------------------------------------------------+ | INTERVAL(6,1,2,3,4,5,6,7,8,9,10) | +---------------------------------------------------------+ | 6 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
請記住,6是大于N的第一個值的值列表中的從零開始的索引。在我們的示例中,7是違規(guī)值,位于第六個索引槽中。
LEAST()函數與GREATEST()函數相反。 其目的是從值列表(N1,N2,N3等)返回最小值項。 以下示例顯示LEAST()函數的正確用法和輸出:
SQL>SELECT LEAST(3,5,1,8,33,99,34,55,67,43); +---------------------------------------------------------+ | LEAST(3,5,1,8,33,99,34,55,67,43) | +---------------------------------------------------------+ | 1 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
函數的單一參數版本將返回X的自然對數。如果使用兩個參數調用,則返回任意基數B的X的對數??紤]下面的示例:
SQL>SELECT LOG(45); +---------------------------------------------------------+ | LOG(45) | +---------------------------------------------------------+ | 3.806662 | +---------------------------------------------------------+ 1 row in set (0.00 sec) SQL>SELECT LOG(2,65536); +---------------------------------------------------------+ | LOG(2,65536) | +---------------------------------------------------------+ | 16.000000 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回X的十進制對數。
SQL>SELECT LOG10(100); +---------------------------------------------------------+ | LOG10(100) | +---------------------------------------------------------+ | 2.000000 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回N除以M的余數。請參考以下示例:
SQL>SELECT MOD(29,3); +---------------------------------------------------------+ | MOD(29,3) | +---------------------------------------------------------+ | 2 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
OCT()函數返回八進制數N的字符串表示。這相當于使用CONV(N,10,8)。
SQL>SELECT OCT(12); +---------------------------------------------------------+ | OCT(12) | +---------------------------------------------------------+ | 14 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
這個函數簡單地返回pi的值。 SQL在內部存儲pi的完整雙精度值。
SQL>SELECT PI(); +---------------------------------------------------------+ | PI() | +---------------------------------------------------------+ | 3.141593 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
這兩個函數返回X的值增加到Y的冪。
SQL> SELECT POWER(3,3); +---------------------------------------------------------+ | POWER(3,3) | +---------------------------------------------------------+ | 27 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回X的值,從度數轉換為弧度。
SQL>SELECT RADIANS(90); +---------------------------------------------------------+ | RADIANS(90) | +---------------------------------------------------------+ |1.570796 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數將X四舍五入為最接近的整數。 如果提供了第二個參數D,則函數將X舍入為D個小數位。 D必須為正數或小數點右邊的所有數字將被刪除。 考慮下面的例子:
SQL>SELECT ROUND(5.693893); +---------------------------------------------------------+ | ROUND(5.693893) | +---------------------------------------------------------+ | 6 | +---------------------------------------------------------+ 1 row in set (0.00 sec) SQL>SELECT ROUND(5.693893,2); +---------------------------------------------------------+ | ROUND(5.693893,2) | +---------------------------------------------------------+ | 5.69 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回X(負,零或正)的符號為-1,0或1。
SQL>SELECT SIGN(-4.65); +---------------------------------------------------------+ | SIGN(-4.65) | +---------------------------------------------------------+ | -1 | +---------------------------------------------------------+ 1 row in set (0.00 sec) SQL>SELECT SIGN(0); +---------------------------------------------------------+ | SIGN(0) | +---------------------------------------------------------+ | 0 | +---------------------------------------------------------+ 1 row in set (0.00 sec) SQL>SELECT SIGN(4.65); +---------------------------------------------------------+ | SIGN(4.65) | +---------------------------------------------------------+ | 1 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回X的正弦。參考以下示例:
SQL>SELECT SIN(90); +---------------------------------------------------------+ | SIN(90) | +---------------------------------------------------------+ | 0.893997 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回X的非負平方根。請參考以下示例:
SQL>SELECT SQRT(49); +---------------------------------------------------------+ | SQRT(49) | +---------------------------------------------------------+ | 7 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
STD()函數用于返回表達式的標準偏差。 這等價于取表達式的VARIANCE()的平方根。 以下示例計算CARS表中PRICE列的標準差:
SQL>SELECT STD(PRICE) STD_DEVIATION FROM CARS; +---------------------------------------------------------+ | STD_DEVIATION | +---------------------------------------------------------+ | 7650.2146 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數返回參數X的正切,以弧度表示。
SQL>SELECT TAN(45); +---------------------------------------------------------+ | TAN(45) | +---------------------------------------------------------+ | 1.619775 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
此函數用于將X的值截斷為D個小數位。 如果D為0,則刪除小數點。 如果D為負數,則截斷該值的整數部分中的D個值。 參考下面的例子:
SQL>SELECT TRUNCATE(7.536432,2); +---------------------------------------------------------+ | TRUNCATE(7.536432,2) | +---------------------------------------------------------+ | 7.53 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
更多建議: