![SQL Server 从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/709/27111709/b_27111709.jpg)
6.3 数学函数
数学函数主要用来处理数值数据,主要的数学函数有:绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。在有错误产生时,数学函数将会返回空值NULL。本节将介绍各种数学函数的功能和用法。
6.3.1 绝对值函数ABS(x)和返回圆周率的函数PI()
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P80_9975.jpg?sign=1739155878-AH4KuuYC1uhnw9DhC3OOkniyKqQO3Xhv-0-4058e872772990feacfffc790ac5b329)
ABS(x)返回x的绝对值。
【例6-15】求2,-3.3和-33的绝对值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P80_37586.jpg?sign=1739155878-5LISiIZIah2aaGkKCV4adVmWWi01ctYL-0-cdecdbd87df02eb143b92240dded94df)
执行结果如图6-15所示。
正数的绝对值为其本身,2的绝对值为2;负数的绝对值为其相反数,-3.3的绝对值为3.3;-33的绝对值为33。
PI()返回圆周率π的值。默认的显示小数位数是6位。
【例6-16】返回圆周率值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_37588.jpg?sign=1739155878-uYZAw6vuWX868xHeWnrPnEJWhLFBgFP8-0-9bedb695ec85a79f4c0056b1ab04b318)
执行结果如图6-16所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_9987.jpg?sign=1739155878-ILDEOqCOu51wNzM7v1aykmYovFP9QqkW-0-fb52668ec9efbfe47b263cb3b6849c3d)
图6-15 ABS()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_9990.jpg?sign=1739155878-SiPGrRsNpcn88r9Wo9Pna4zBYFFXsPgo-0-9f13272e2f70aa6e9bfd7e999c7834db)
图6-16 PI()函数
6.3.2 平方根函数SQRT(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_10034.jpg?sign=1739155878-Nc92M5iL2LRQ9oT3MRrx5C9AsZv08QqH-0-1b06c4a930ad435e215daab1ace950d7)
SQRT(x)返回非负数x的二次平方根。
【例6-17】求9,40的二次平方根,输入语句如下:
SELECT SQRT(9), SQRT(40);
执行结果如图6-17所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_10030.jpg?sign=1739155878-e8FgPUNOMXBfuMNyY5aIkct9WBkjnRqm-0-94d8d0054a6bbac1acc84bc1db671cc2)
图6-17 SQRT()函数
6.3.3 获取随机数的函数RAND()和RAND(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_10033.jpg?sign=1739155878-WE12nclQb0E6ZVyyywGuAyH0wbymUzFd-0-fcdf587fcc8d5f3e59cca8fa7ada79bb)
RAND(x)返回一个随机浮点值v,范围为0~1(即0 ≤ v ≤ 1.0)。若指定一个整数参数x,则它被用作种子值,使用相同的种子数将产生重复序列。如果用同一种子值多次调用RAND()函数,它将返回同一生成值。
【例6-18】使用RAND()函数产生随机数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_37590.jpg?sign=1739155878-QuTNQYIfFU5sNprGylSSIhy4JEuogFxW-0-3c1da440886d7fa92fef471c53befcae)
执行结果如图6-18所示。
可以看到,不带参数的RAND()每次产生的随机数值是不同的。
【例6-19】使用RAND(x)函数产生随机数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_37591.jpg?sign=1739155878-dAJszya0p45GL9oydvHRxa6Kw12eNZgJ-0-d9ef3b48d960254ac4e9d01b98205554)
执行结果如图6-19所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_10018.jpg?sign=1739155878-O0zl4L6ndRwVOuWfh01O2XOrISXSecYU-0-5593e6b7c6b88b53418221059cbda466)
图6-18 不带参数的RAND()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_10021.jpg?sign=1739155878-xbg7Cs8xlWzdTbLUzxGsvFBEAi1wGBtX-0-c58f3b596e6eb7b0439cf128b94ca9dd)
图6-19 带参数的RAND()函数
可以看到,当RAND(x)的参数相同时,将产生相同的随机数,不同的x产生的随机数值不同。
6.3.4 四舍五入函数ROUND(x,y)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10096.jpg?sign=1739155878-BC0VY42TTxUdfOje5NVx0djTOddpYMOg-0-e301aed3533954c3c65a9bbba9a5d16a)
ROUND(x,y)返回最接近于参数x的数,其值保留到小数点后面y位,若y为负值,则将保留x值到小数点左边y位。
【例6-20】使用ROUND(x,y)函数对操作数进行四舍五入操作,结果保留小数点后面指定y位,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_37593.jpg?sign=1739155878-XnHSlTzjhe3tKKwQAIzDEDRECjWPHzOI-0-7367810a3a102800c152c1ca7909a163)
执行结果如图6-20所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10083.jpg?sign=1739155878-GYZZOAefcOMxIrdn0eEZjvhwDOAnAkG5-0-9598a4b78c2659701eb3b4c6d46b2200)
图6-20 ROUND()函数
ROUND(1.38,1)保留小数点后面1位,四舍五入的结果为1.4;ROUND(1.38,0)保留小数点后面0位,即返回四舍五入后的整数值;ROUND(232.38,-1)和ROUND(232.38,-2)分别保留小数点左边1位和2位。
6.3.5 符号函数SIGN(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10095.jpg?sign=1739155878-B2Ia0jblfWOgbSoaevLFSpXyM5MfnCDW-0-159941c9921610ba5b58b1d6e84242e4)
SIGN(x)返回参数的符号,x的值为负、零或正时,返回结果依次为-1、0或1。
【例6-21】使用SIGN()函数返回参数的符号,输入语句如下:
SELECT SIGN(-21),SIGN(0), SIGN(21);
执行结果如图6-21所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10091.jpg?sign=1739155878-GkikanlyHxPgJWiYU8EWFCg9dQ3jg5aj-0-2985249e7f7a08bf493c4ba4e0fd4bb1)
图6-21 SIGN()函数
SIGN(-21)返回-1;SIGN(0)返回0;SIGN(21)返回1。
6.3.6 获取整数的函数CEILING(x)和FLOOR(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10094.jpg?sign=1739155878-mRCAADR8YC8yK4YDfBb9WWokSI3evlBo-0-6ab0036d2e97fbdc9d509758e390b013)
CEILING(x)返回不小于x的最小整数值。
【例6-22】使用CEILING()函数返回最小整数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_37595.jpg?sign=1739155878-v4AiDUtWeIO2SSD91ctTFSSYoLAxFUsH-0-fc8fefb196e8f16bb3857b633c1a2e59)
执行结果如图6-22所示。
-3.35为负数,不小于-3.35的最小整数为-3,因此返回值为-3;不小于3.35的最小整数为4,因此返回值为4。
FLOOR(x)返回不大于x的最大整数值。
【例6-23】使用FLOOR()函数返回最大整数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10069.jpg?sign=1739155878-yWx48CcaVOXBzcRZlzOa1iMn0PumwHUp-0-f0992376c575c67716af4831288c5fce)
执行结果如图6-23所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10072.jpg?sign=1739155878-nZ3RfNA215lfRatw9Y0dL89U9b3xXRsK-0-eeb3e26100ea562eb0b02baa1af04299)
图6-22 CEILING()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10075.jpg?sign=1739155878-Dy0Ep9rlqr3ygaQ5aIgPKxbUK8A6xl7G-0-255e96b7b35bf5bfcd26c40c51c1d7ba)
图6-23 FLOOR()函数
-3.35为负数,不大于-3.35的最大整数为-4,因此返回值为-4;不大于3.35的最大整数为3,因此返回值为3。
6.3.7 幂运算函数POWER(x,y)、SQUARE (x)和EXP(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_10150.jpg?sign=1739155878-ofzFe8UCZXPd3wJgzf5j174a363TtYBc-0-07004b6e140d22ff783bbb77e4c1ad93)
POWER(x,y)函数返回x的y次方的结果值。
【例6-24】使用POWER()函数进行乘方运算,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_37598.jpg?sign=1739155878-XoBzalxQcTYOLZMm307kRiJDpxkCrDnK-0-ef38463df88694d66b20b97060e1c912)
执行结果如图6-24所示。
可以看到,POWER(2,2)返回2的2次方,结果是4;POWER(2,-2)返回2的-2次方,结果为4的倒数,即0.25。
SQUARE(x)返回指定浮点值x的2次方。
【例6-25】使用SQUARE()函数进行次方运算,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_37599.jpg?sign=1739155878-uMkK9kppYezQ4IodZ6e5lDQbGK6wes08-0-aa206a2df8cd410a4f2f2edb8d199e77)
执行结果如图6-25所示。
EXP(x)返回e的x次方后的值。
【例6-26】使用EXP()函数计算e的次方,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_37600.jpg?sign=1739155878-SMFiEjsS7HQhQeVw2We9PXqoinXwrm3p-0-4e740740b2796124124916cea1b3d4a3)
执行结果如图6-26所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_10123.jpg?sign=1739155878-wCnG101oCDw4Z6IKZjw6o7VyseluDlaq-0-21f22f576154bb9765300b1cdd3218c8)
图6-24 POWER()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_10126.jpg?sign=1739155878-SI80ajLkmwqhjEaythNx2qpZa747XMux-0-5b6f404f5a7b281772c3f14d5c704b23)
图6-25 SQUARE()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_10129.jpg?sign=1739155878-w4RgdZ6LLbz9rG8QidXrrbZALhwZOieI-0-89013443614fa0721e409df32cbc5fdb)
图6-26 EXP()函数
EXP(3)返回以e为底的3次方,结果为20.085536923187;EXP(-3)返回以e为底的-3次方,结果为0.0497870683678639;EXP(0)返回以e为底的0次方,结果为1。
6.3.8 对数运算函数LOG(x)和LOG10(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_10149.jpg?sign=1739155878-P9kgxp1GB1hZT5ADwJBMJTPHnQjHhsXk-0-41a9800b42606120349b0707eb0dfbf6)
LOG(x)返回x的自然对数,x相对于基数e的对数。
【例6-27】使用LOG()函数计算自然对数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_37601.jpg?sign=1739155878-GO5ISSTvGwKBeOqwepNf8BNgUtt1yzVe-0-4bcbb4198883659e8c0b1c5197760b4a)
执行结果如图6-27所示。
对数定义域不能为负数。
LOG10(x)返回x的基数为10的对数。
【例6-28】使用LOG10()函数计算以10为基数的对数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_37602.jpg?sign=1739155878-IOFd8KMGZyIr1BhUT0D4zOc8HdCeTef4-0-dac47eae1e2e289048196e230596092c)
执行结果如图6-28所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10154.jpg?sign=1739155878-KWh3zJoxANsPvs4cD1MkS0BEi5muentN-0-45352c4fa1c7fa34a10bafdd68d7cbe0)
图6-27 LOG()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10157.jpg?sign=1739155878-8Hfd7O4BDDNUlj3kT4WnegY3MVVOctV2-0-8dddad41c87d913f1b8c4eba38a1c711)
图6-28 LOG10()函数
10的0次方等于1,因此LOG10(1)返回结果为0,10的2次方等于100,因此LOG10(100)返回结果为2。10的3次方等于1000,因此LOG10(1000)返回结果为3。
6.3.9 角度与弧度相互转换的函数RADIANS(x)和DEGREES(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10200.jpg?sign=1739155878-eqMq1rUxfnfLzlcjxD4qWIqZeohkgBFj-0-fbfa107222b1dfd9bfaa8d4b57264918)
RADIANS(x)将参数x由角度转换为弧度。
【例6-29】使用RADIANS()函数将角度转换为弧度,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_37603.jpg?sign=1739155878-yBG4KJuYeNqgq9C5zGGD9pdPLIZdq7dc-0-8f4b17280bb2ccb62e7d10bad14d9339)
执行结果如图6-29所示。
DEGREES(x)将参数x由弧度转换为角度。
【例6-30】使用DEGREES()函数将弧度转换为角度,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_37604.jpg?sign=1739155878-z1CDFrppTEPyp6ZjNL2RVLfriWrQ8QvI-0-61383013c0cde785640aace7cf242e44)
执行结果如图6-30所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10177.jpg?sign=1739155878-6QDs4R6t04nlasKfLwv4qRihPMeFWhmJ-0-44d0930b55874b91bb8d84f9011e00fe)
图6-29 RADIANS()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10180.jpg?sign=1739155878-qg30EGjwtWXTS6haFbuJFOupIMhAJP87-0-998531b20f440e10a6715721c4585cbb)
图6-30 DEGREES()函数
6.3.10 正弦函数SIN(x)和反正弦函数ASIN(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10199.jpg?sign=1739155878-BAMr7zDXb7BWxKiMYTcfwky3DPgMTsfl-0-a78602e3a44cbe86f94afefc4d3a12f2)
SIN(x)返回x的正弦,其中,x为弧度值。
【例6-31】使用SIN()函数计算正弦值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_37605.jpg?sign=1739155878-uCWEGuAjadnFDyK8s9dPSAlnZrfW6OkT-0-f57be6be6533595da8a8589863ce7e41)
执行结果如图6-31所示。
ASIN(x)返回x的反正弦,即正弦为x的值。若x不在-1~1,则返回NULL。
【例6-32】使用ASIN()函数计算反正弦值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_37606.jpg?sign=1739155878-B2dSoXMuQEoaz2KtVcwE4CObeLM6cyOm-0-11ee74f1720c71ac6acb746207a0b86d)
执行结果如图6-32所示。
由结果可以看到,ASIN函数的值域正好是SIN函数的定义域。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10203.jpg?sign=1739155878-JTyvjrSMMO9VD0rxF2dSw0W4B1xjx510-0-14442652185fb681235264cff7b44419)
图6-31 SIN()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10206.jpg?sign=1739155878-tyqTqguxkSYaA4C0wFeiXkAdqSU1h9zq-0-d7c992fa621d4a8e973e91506c06b3e0)
图6-32 ASIN()函数
6.3.11 余弦函数COS(x)和反余弦函数ACOS(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10249.jpg?sign=1739155878-ftcsT8TuiEDOqmRQjzVhwy3jRTijBVVD-0-9beb5124de9768b4c83b54cab91ed02f)
COS(x)返回x的余弦,其中,x为弧度值。
【例6-33】使用COS()函数计算余弦值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_37608.jpg?sign=1739155878-4UtcbiGhUPY6xBh5X43JWAEXGMOEdzhL-0-3e6646bcba0eabc849374809dbc6b0c3)
执行结果如图6-33所示。
由结果可以看到,COS(0)值为1;COS(PI())值为-1;COS(1)值为0.54030230586814。
ACOS(x)返回x的反余弦,即余弦是x的值。若x不在-1~1,则返回NULL。
【例6-34】使用ACOS()函数计算反余弦值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_37609.jpg?sign=1739155878-yEMM4Utd1ZoyLOlnX9c5gAaNIKHKhQ17-0-7d56f4c0ff550244f6d6cd27de056c14)
执行结果如图6-34所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10225.jpg?sign=1739155878-wuCxQuCNQz6y8XK65Nw2wJdMeJxZna8l-0-e7a45f53f3c4825c912b73d463bd0dc5)
图6-33 COS()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10228.jpg?sign=1739155878-fWszt1UCbw7c9hwXgzPNXD5xdGlf0Zxw-0-d93fb063e8336179c7af6e2192686ee7)
图6-34 ACOS()函数
由结果可以看到,函数ACOS和COS互为反函数。
6.3.12 正切函数、反正切函数和余切函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10248.jpg?sign=1739155878-xCaZm1vm7BInPHDYOrPcyVWB40o22afC-0-d71dd7f5d8bdef835db2b87c3fb07bcf)
TAN(x)返回x的正切,其中,x为给定的弧度值。
【例6-35】使用TAN()函数计算正切值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_37610.jpg?sign=1739155878-PxWpbHrLLtrenhWfnsEVQJPu8SZp11YZ-0-0ab6dbac2876dcee39ce60a76411dca2)
执行结果如图6-35所示。
ATAN(x)返回x的反正切,即正切为x的值。
【例6-36】使用ATAN()函数计算反正切值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_37611.jpg?sign=1739155878-odFhlvwKqq8Vww7DbVQfDoxi0CrPyckP-0-93f2de3105caf00ca76a35a9ebd58285)
执行结果如图6-36所示。
由结果可以看到,函数ATAN和TAN互为反函数。
COT(x)返回x的余切。
【例6-37】使用COT()函数计算余切值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P86_37613.jpg?sign=1739155878-AsOgEg0tpS9KazEmH30nTsHvzQj4c4qO-0-0d2c131626c358d3b472f6b32c98d7aa)
执行结果如图6-37所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P86_10261.jpg?sign=1739155878-fz44An2N37AQQiLJkSeneEeddWGZqv8z-0-d17e9eeb0ee34f5121bb7eb0f22ebb42)
图6-35 TAN()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P86_10264.jpg?sign=1739155878-RQgSdPWeKeg1FHameWkbs0Jf3cFw5lkz-0-25212864bf2dcbc8d6872bab6b01ecae)
图6-36 ATAN()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P86_10267.jpg?sign=1739155878-s0vMiAzWh0p1rstmAwhRr5kIzisdGJw6-0-883d2af151d85fe4cb393c159efcb273)
图6-37 COT()函数
由结果可以看到,函数COT和TAN互为倒函数。