【你也能从零基础学会网站开发】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()这些数学函数的使用率相当大,其他相对而言比较少!

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多 好玩 好用 好看的干货教程可以 点击下方关注❤️ 微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇