![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=1739535396-kr8FkWtTg8ico5CO0IxBuBNUO0PgBLrQ-0-7561467a792b8e957458d49a10e8d18a)
ABS(x)返回x的绝对值。
【例6-15】求2,-3.3和-33的绝对值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P80_37586.jpg?sign=1739535396-q0fKpNJL11YnWbcUTBnKfQGpekQpHrTM-0-aa8943fa5eefda7cb094eaaa5c9b5cc8)
执行结果如图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=1739535396-nKzp2NgRBKVJDYzagRiHGJFnKlCy5nEq-0-3520e1cc886ea8f84dfa45165e2c863c)
执行结果如图6-16所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_9987.jpg?sign=1739535396-MiQc0ITNvCBRIyVYyJJixP4VM1oe6z0x-0-eabc352945dd98f8dcfaa9c51cff96b4)
图6-15 ABS()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_9990.jpg?sign=1739535396-ogVzXM1dHl9mcahzU8WECzOfLad42NxY-0-8ad845ae59d72debb82c1472985e1c3a)
图6-16 PI()函数
6.3.2 平方根函数SQRT(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_10034.jpg?sign=1739535396-sSAoAl9LNJI84l9aq8hsD6qtuEeyTHEl-0-4fe77b50bac5f45fc8a7fb9dfc3b75a8)
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=1739535396-9MCJLQpsqgtvBvpBxxI1OqoJk4zb5QVT-0-01b3e09afd7db6403cf7db3d5b9b9d1a)
图6-17 SQRT()函数
6.3.3 获取随机数的函数RAND()和RAND(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_10033.jpg?sign=1739535396-ZX3GB4ngjPYvI068ldszKqbPVnqYnSPF-0-8c66b6b381a6b273a6dcf9a48f91e114)
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=1739535396-kBfvrkiJPCkCzGt96CdI5hGYEMGOUo9I-0-595938473bd45303129de9c4b56161b1)
执行结果如图6-18所示。
可以看到,不带参数的RAND()每次产生的随机数值是不同的。
【例6-19】使用RAND(x)函数产生随机数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_37591.jpg?sign=1739535396-0XwGk7Pf4gErSOq1MLu3mP0YFnz5N2Je-0-2db916098f7b9b5301fd7703ce5a8f6c)
执行结果如图6-19所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_10018.jpg?sign=1739535396-WkrVP31Zcln5gdgGicUeNHMEa3WkrbGq-0-e5b3ccedea623277172459372bd564dc)
图6-18 不带参数的RAND()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P81_10021.jpg?sign=1739535396-LmcevMThtCO8T3dPimZHuuLwuF5UhNEF-0-ff023eca310bfbb87aff3be00677ae7f)
图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=1739535396-UVG88uFSt9oWRtNTjdFcnjGU8nat6rsx-0-020e5360411556d0021115c1fbff450e)
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=1739535396-7wr5JMg5X5hI8ArQL4CPEbZ4ZaHyuJ5S-0-407e2aaf697d16d3527200d8ae739553)
执行结果如图6-20所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10083.jpg?sign=1739535396-yx5bVLya8s1gQL5nOT4etB7BGzJDtuGA-0-22698afcbf298d4769f5c9171c7df3e8)
图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=1739535396-tuxdPmAiSSpg1TfOGIfwTCoSVohRsDKi-0-cc77206e2dfca23df887c51a4ae483ca)
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=1739535396-ZUzkbt0UTsZxUqhiT751zBE4Pp1dhiTL-0-f7221edd1997c8fa998f1aeb2be42ace)
图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=1739535396-XUjOam1AJdD5EDUJa5o41wOzedr6OF4g-0-1c90e228bdcc423d382e48f95c58ad6c)
CEILING(x)返回不小于x的最小整数值。
【例6-22】使用CEILING()函数返回最小整数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_37595.jpg?sign=1739535396-Epl1PilwhqNovRbWSYpbx259bTqgiCF0-0-79dcd19e0c8154a47108f43dfbc5877f)
执行结果如图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=1739535396-Vj3IEa5YsckOw2wUPGaF7SSF27ljy0ep-0-01d1240c685bd4f6f4ebaade4ccf6438)
执行结果如图6-23所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10072.jpg?sign=1739535396-P1RhrwWwaoX4ylZGSf20jPW2Hcv6C3lX-0-040e7cf367b74dc60b278d59672c5004)
图6-22 CEILING()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P82_10075.jpg?sign=1739535396-gNle660SRk4DlBQg7AVox06dK0XDT2UO-0-a5e1ccf3b53e3f98f127024d429c22cf)
图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=1739535396-yGxMakRNrurncDMICiPU4el5Fixhr7Wt-0-deb3f71803c0036ff045c001bd749dcf)
POWER(x,y)函数返回x的y次方的结果值。
【例6-24】使用POWER()函数进行乘方运算,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_37598.jpg?sign=1739535396-q8kWQlSIx9XaLo94IMfwwcFQmcgOqMeS-0-9b8bab25a3492b5e1eb6bb490b531842)
执行结果如图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=1739535396-NAIlhfrTGdzjamYioK0RM6CKcEZC0kYK-0-71ddc17adee81e7abd92a8abec9aa639)
执行结果如图6-25所示。
EXP(x)返回e的x次方后的值。
【例6-26】使用EXP()函数计算e的次方,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_37600.jpg?sign=1739535396-oXJpK95c9gpnywyWtwIdi98epaSWRMoi-0-c0e9563cb55914389cab7b8ec46190d3)
执行结果如图6-26所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_10123.jpg?sign=1739535396-vUODFGmqCSxaDXipyNjXebqw7UH1cZLt-0-b4f7b913de54d5e367a691ce43cef6fa)
图6-24 POWER()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_10126.jpg?sign=1739535396-kMirHcfjk7m0HCZu2hE07I0TbSSpPF8b-0-3c3409ccb7c3c43e39d324f74cee9570)
图6-25 SQUARE()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_10129.jpg?sign=1739535396-vAczbkX45RjoL426X7U63vAkH3NMjDyj-0-90f3b809678a2a42d4d5a771dc8d24a9)
图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=1739535396-lyAi2UJAVl7oe3ZVF7DhUiIn6AiNoTTX-0-47fcb515f9ac4f4821ddb9942d949e10)
LOG(x)返回x的自然对数,x相对于基数e的对数。
【例6-27】使用LOG()函数计算自然对数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_37601.jpg?sign=1739535396-ORpCX3dH3Oew2YxUGSJ7xt6yl9IGK9U5-0-ca98a8a3b981cff6c912a030d82b5382)
执行结果如图6-27所示。
对数定义域不能为负数。
LOG10(x)返回x的基数为10的对数。
【例6-28】使用LOG10()函数计算以10为基数的对数,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P83_37602.jpg?sign=1739535396-oTHaz8hmUwpye5gNc4Halp6f3JBLEE3r-0-47946deba84eef362645d806c04cb89b)
执行结果如图6-28所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10154.jpg?sign=1739535396-tcMqwT8v8YeaxDF5e52AjKtcS7rBvcbh-0-c69154459f8d8dee37844ddf1c11c7eb)
图6-27 LOG()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10157.jpg?sign=1739535396-AHpCOiB1N45qDD4Zgg2elrku1AGa67sj-0-9cfe76d5fb1142b566534ce9ac6bc862)
图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=1739535396-siFpkJlZG5J3QZmSh5YO66hZAwED9vUB-0-ca81adcc57fe966d07db9ffb2618e7c5)
RADIANS(x)将参数x由角度转换为弧度。
【例6-29】使用RADIANS()函数将角度转换为弧度,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_37603.jpg?sign=1739535396-W7eGD1jjj4quRQQJYL0x7P3V5izQzSjU-0-32efd001acb9b208134eec9294109e3e)
执行结果如图6-29所示。
DEGREES(x)将参数x由弧度转换为角度。
【例6-30】使用DEGREES()函数将弧度转换为角度,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_37604.jpg?sign=1739535396-vifFImCB4TRojG1To8wV06kooMaXxC0T-0-1ee01f24f69f22bcc9fb035b82fa5536)
执行结果如图6-30所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10177.jpg?sign=1739535396-cs6iMRrU1kI3ZjLrqTcNWHFoYuUeuoVa-0-f65d700c0f02808920c8e12bfc987c05)
图6-29 RADIANS()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10180.jpg?sign=1739535396-NsKfnhvnrAwSY2tOH4G7vheczSHdikkW-0-e808ffb150e84dd342cb7da137fb62f7)
图6-30 DEGREES()函数
6.3.10 正弦函数SIN(x)和反正弦函数ASIN(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_10199.jpg?sign=1739535396-ne41K7r7IyqekjKBIkoVKbSf0Mhy7Mmp-0-b3baa8456a2fcab62ff51db14ba4f248)
SIN(x)返回x的正弦,其中,x为弧度值。
【例6-31】使用SIN()函数计算正弦值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P84_37605.jpg?sign=1739535396-jSHeKfj3SKjY4x7KDwT3ZlmoZocQQaAr-0-42a65e8de8ebc0d8a48632ebfb033eef)
执行结果如图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=1739535396-hvtpBnv3OyWRT49BlFcAxfFuKPIbTWoo-0-13669c250c2a80aa64cca7258c2e1937)
执行结果如图6-32所示。
由结果可以看到,ASIN函数的值域正好是SIN函数的定义域。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10203.jpg?sign=1739535396-IewPwKaY3HVxoxgPrzP1Z4kOr53Fe8yp-0-fbbcf1341efb4e6b75411cd27eca122c)
图6-31 SIN()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10206.jpg?sign=1739535396-LNjzqYyP1Itev1cfrsDHtLyfHD6dS0js-0-67611f8fd1bfdd317cdc6fadcf9ca278)
图6-32 ASIN()函数
6.3.11 余弦函数COS(x)和反余弦函数ACOS(x)
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10249.jpg?sign=1739535396-19UPYCqOJPHRZTMhWP9piobzlGROj6CB-0-0b82431db72ec1e0ccae9d75fbc8ff3c)
COS(x)返回x的余弦,其中,x为弧度值。
【例6-33】使用COS()函数计算余弦值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_37608.jpg?sign=1739535396-VROuy9MsEnamr61vvaaEwmDXlL9eRsKq-0-34b092110259986ef7617ddaa8081694)
执行结果如图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=1739535396-kWHfr8xL4MN6eJ9CfV3zkY1RXmK9lUce-0-0fcb996dbaf5d541617ad4bc067d1a93)
执行结果如图6-34所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10225.jpg?sign=1739535396-Dn7wEu1B2CZw7M1rBIYc6F9QjFDN1p1l-0-ce7e678d6b145fa137dc4cd3ca2dfabf)
图6-33 COS()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10228.jpg?sign=1739535396-hfS5hDiust3VGOukHI3cTGKviL5RL9WQ-0-996e088f6bc6275c348f9e2ebbf33e5a)
图6-34 ACOS()函数
由结果可以看到,函数ACOS和COS互为反函数。
6.3.12 正切函数、反正切函数和余切函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_10248.jpg?sign=1739535396-HhExs8xRjCjRZneccFcxyn2dGqyxxot0-0-c0eda0f3f2bca40359828936538c35be)
TAN(x)返回x的正切,其中,x为给定的弧度值。
【例6-35】使用TAN()函数计算正切值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_37610.jpg?sign=1739535396-ByReieTgVPTzBkctw4tQCmjUPYYctbbd-0-5544a455280156accbdd13c81842a94c)
执行结果如图6-35所示。
ATAN(x)返回x的反正切,即正切为x的值。
【例6-36】使用ATAN()函数计算反正切值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P85_37611.jpg?sign=1739535396-mM6a235N3C9Vo3oNnuqP7EnZdefnbLnU-0-9ece1988adc9275e0bf090f54cd0e5ff)
执行结果如图6-36所示。
由结果可以看到,函数ATAN和TAN互为反函数。
COT(x)返回x的余切。
【例6-37】使用COT()函数计算余切值,输入语句如下:
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P86_37613.jpg?sign=1739535396-QN9K93T2RzGJGRNU6pMi6tZcy6gDkdoI-0-8daedf294b5028d18b0f853e9c5fa76d)
执行结果如图6-37所示。
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P86_10261.jpg?sign=1739535396-y33OOWOTmDdGch51eL3Zwtw2GDURsaRn-0-20dc4c8b57fd4f537943cf5a4dbe3155)
图6-35 TAN()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P86_10264.jpg?sign=1739535396-n686qHz9XddVMbKIWKjOKWkZG4uh9TjI-0-598ba770a36f709ca753d4f85eb68c48)
图6-36 ATAN()函数
![](https://epubservercos.yuewen.com/2AE60C/15477656704589106/epubprivate/OEBPS/Images/Figure-P86_10267.jpg?sign=1739535396-4ygkiu65lnVvp1kahwxC57oGJ6HzUYii-0-caac8dc1403e5c162d99c6f6ea1e3528)
图6-37 COT()函数
由结果可以看到,函数COT和TAN互为倒函数。