【你也能从零基础学会网站开发】SQL Server 2000 中的这些内置系统函数你都见过吗? 《第四节: 数学函数》
🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注
数学函数
在SQL Server 2000
中, 我们可以使用一些数学函数
对数字表达式进行数学运算,并返回结果以满足特定的数据处理需求, 这里我简单介绍几个比较常用的数学函数
FLOOR函数
定义
FLOOR函数
用于将数值向下取整
到最接近的整数!
通俗的说FLOOR函数
会返回小于
或等于
给定数值的最大整数!
举个栗子
SELECT FLOOR(3.7); --返回3 因为3是小于或等于 3.7 的最大整数
SELECT FLOOR(-2.3); --返回-3 因为-3是小于或等于-2.3的最大整数
注意: 这里的“向下”是指数值轴上的较小方向,对于负数来说就是更小的负数
RAND()函数
定义
这个函数是专门用来生成随机数的函数!
想象一下你有一个可以无限摇动的骰子,但它不是普通的六面骰子,而是能摇出从0到1
之间的任何小数
的骰子。
每次你摇这个骰子,它都会给出一个随机的、而且是不重复的小数。
所以这个函数就是用来模拟这个随机小数生成过程的!
例如
-- 直接使用RAND()函数生成一个随机浮点数
SELECT RAND() AS '随机浮点数';
如图
每次执行这条SQL语句时,都会返回一个不同的0到1
之间的随机浮点数
!
举个栗子
如果我们要生成1 到 10的随机数 应该怎么办呢?
如下
SELECT FLOOR(1 + RAND() * 10) AS '1到10随机数';
如图
简单的分析一下这个案例
RAND()函数
用于生成一个0到1之间的随机浮点数, 这个数可以是0.00001、0.5、0.99999
等任何0到1
之间的值, 这个上面我讲过了!
然后RAND() * 10
:将RAND()函数
生成的随机数
乘以10
! 这样做可以将原本0到1
之间的随机数就变成了0到10
之间的随机数, 但不包括0,可能包括接近10但小于10的数!
再然后是1 + RAND() * 10
:在上一步的基础上加1, 这样做的目的是让原本0到10
之间的随机数不包括0
就变成了1到11
之间的随机数, 但又不包括11,可能包括接近11但小于11的数!
然而,由于我们的目标是1到10之间的整数,我们需要对结果进行取整,对吧!
所以使用FLOOR(1 + RAND() * 10)
:让FLOOR函数
用于向下取整
!
也就是说返回小于
或等于
给定数值的最大整数, 那么它将1 + RAND() * 10
的结果向下取整
到最接近的整数,确保结果是一个1到10
之间的整数,并且包括1和10
由于浮点数的精度问题,实际上得到10的概率略低于其他数字,大多数情况下我们完全可以忽略不计!
NEWID() 函数
定义
它用于生成一个全球唯一标识符(GUID,Globally Unique Identifier)
通俗的说你可以把它想象成一个非常长的、几乎不可能重复的随机数字串,通常用来确保数据库中的记录能够有一个独一无二的标识符!
例如
SELECT NEWID();
如图
GUID
是由32个十六进制数
字组成的包括连字符
格式通常是 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
。
这种标识符的好处是,即使在不同的数据库或不同的服务器上,生成的两个GUID
也几乎不可能相同,因此非常适合用于需要唯一性的场景!
所以NEWID() 函数
就像是自动生成这些唯一编号的机器,每次调用它,它都会给你一个全新的、不会和其他编号重复的编号。
我们来做一个测试
如下
-- 创建一个新的表,用于存储一些数据
CREATE TABLE testTable (
ID UNIQUEIDENTIFIER DEFAULT NEWID() PRIMARY KEY,
username NVARCHAR(50)
);
-- 插入一些数据,不指定ID(因为ID有默认值NEWID())
INSERT INTO testTable (username) VALUES ('爱丽丝');
INSERT INTO testTable (username) VALUES ('鲍勃');
INSERT INTO testTable (username) VALUES ('克莱尔');
如图
这里我们设置了一个默认值 NEWID()
, 这意味着每次插入新记录时,如果没有指定 ID 的值,SQL Server 会自动为这个记录生成一个新的GUID
作为 ID
应用场景
比如在一个在线抽奖活动中,需要随机选择中奖者!
可以使用NEWID() 函数
, 参与者的ID进行匹配,以确定中奖者!
举个栗子
我们可以简单的模拟一个随机抽奖系统
, 这里我给出一点简单的数据让大家参考
如下
-- 假设有一个用户表users,包含用户ID和用户姓名
CREATE TABLE users (
user_id INT PRIMARY KEY,
user_name VARCHAR(50)
);
-- 插入一些示例数据
INSERT INTO users (user_id, user_name) VALUES (1, '爱丽丝');
INSERT INTO users (user_id, user_name) VALUES (2, '鲍勃');
INSERT INTO users (user_id, user_name) VALUES (3, '克莱尔');
INSERT INTO users (user_id, user_name) VALUES (4, '大卫');
INSERT INTO users (user_id, user_name) VALUES (5, '伊娃');
随机排序查询
-- 使用RAND()函数随机选择一个用户作为中奖者
SELECT user_id,user_name FROM users ORDER BY NEWID();
如图
然后结合TOP关键字
把第一个提取出来!
SELECT TOP 1 user_id,user_name FROM users ORDER BY NEWID();
如图
PI()函数
定义
你只要小学数学学过圆周率的话,那你肯定就知道这个函数的作用了!
PI()函数
就是用于返回圆周率 π 的值
。
圆周率 π
是一个无理数
,大约等于 3.141592653589793
, 这个函数
在需要进行与圆相关的数学计算时那么就会非常有用, 当然大部分情况下,我们不会在数据库中做这种操作,但是也有例外的时候!!
举个栗子
比如说现在我们想要计算圆的面积, 首先你要清楚计算圆面积的数学公式:
面积= π × R半径2
假设现在想计算一个半径为 5 的圆的面积!
如下
--计算面积
SELECT PI() * 5 * 5 as '面积为';
如图
POWER() 函数
定义
它用于计算一个数的指数幂!
语法规则
POWER(parameter1, parameter2)
参数解释
parameter1
:要计算幂的基数
parameter2
:基数要被乘的次数,也就是俗称的指数
举个栗子
比如现在我们要计算2的3次方
如下
SELECT POWER(2, 3) AS '2的3次方等于';
如图
同时,我们在查询的时候,也可以使用它来计算某个数值字段,并且结合条件进行查询数据
比如: 有一个名为table_name的表,其中有一个名为column_name的列,存储着数字,
可以使用POWER()函数
计算这些数字的平方!
如下
CREATE TABLE testTable2(
id INT PRIMARY KEY IDENTITY,
num_val DECIMAL(10, 2) NOT NULL
);
INSERT INTO testTable2 (num_val) VALUES (20);
INSERT INTO testTable2 (num_val) VALUES (2);
INSERT INTO testTable2 (num_val) VALUES (3.5);
INSERT INTO testTable2 (num_val) VALUES (10);
INSERT INTO testTable2 (num_val) VALUES (5);
然后我们进行查询并且计算平方值
-- 查询表中的数据及其平方值
SELECT num_val as '原始值', POWER(num_val, 2) AS '它的平方值' FROM testTable2;
如图
最后
还有很多数学 相关的函数,这里我就不挨个说了,我们在以后实际开发中遇到了直接查看文档也可以!
在实际开发中,ROUND()、SUM()
以及POWER()
这些数学函数的使用率相当大,其他相对而言比较少!
"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚
好玩 好用 好看
的干货教程可以
点击下方关注❤️
微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇