数据库
首页 > 数据库> > SQL---高级函数

SQL---高级函数

作者:互联网

rand()

随机生成<1的小数

select rand()        --结果:类似0.1998050720000710...

floor()

返回 ≤ 所给数字表达式的最大整数
我的理解:有小数就只取整数部分,没有小数就是它本身

select floor(6.123)				--结果:6
select floor(6)					--结果:6
select floor(rand())			--结果:0
select floor(rand() * 10)		--结果:随机0~9
select floor(rand() * 5)		--结果:随机0~4
select floor(rand() * n)		--结果:随机0~n-1

ceiling()

返回 ≥ 所给数字表达式的最大整数
我的理解:有小数就整数部分+1,没有小数就是它本身

select ceiling(6.123)				--结果:7
select ceiling(6)					--结果:6
select ceiling(rand())				--结果:1
select ceiling(rand() * 10)			--结果:随机1~10
select ceiling(rand() * 5)			--结果:随机1~5
select ceiling(rand() * n)			--结果:随机1~n

charindex()

查找字符或字符串在另一个字符串的起始位置,返回int类型

--charindex(要查找的内容, 字符串, 从第几位开始查找)
select charindex('上次', '上次跨年还是在上次', 0)		--结果:1

--从第2位开始找,但返回结果还是从0开始的位置
select charindex('上次', '上次跨年还是在上次', 2)		--结果:8

--位置可不写,默认从第0位开始查找
select charindex('上次', '上次跨年还是在上次')			--结果:1

--找不到就返回0
select charindex('阿伟', '上次跨年还是在上次')		--结果:0

--若不写where,则查找该字段列所有内容
select charindex('查找内容', 字段) from 表 where 条件

patindex()

查找字符或字符串在另一个字符串或表达式中的起始位置
跟charindex()不同于能加'通配符',也因此固定从第0位开始找
对于变化的搜索字符串很有价值

--patindex('查找内容', 删除内容)
select patindex('上次%', '上次学习还是在上次')		--结果:1, 以此为开头
select patindex('%上次', '上次学习还是在上次')		--结果:8, 以此为结尾
select patindex('%上次%', '上次学习还是在上次')		--结果:1, 返回第一个的位置

select patindex('上次', '上次学习还是在上次')		            --结果:0, 因为不一致
select patindex('上次学习还是在上次', '上次学习还是在上次')		--结果:1, 一致

--若不写where,则查找该字段列所有内容
select patindex('查找内容', 字段) from 表 where 条件

stuff()

删除指定长度的字符,或在指定起点处插入另一组字符,返回字符串类型

--stuff(列名, 开始位置, 删除长度, 替代字符串)
select stuff('你看这个彬彬就是逊啊!', 2, 5, '')	--结果:你就是逊啊!

--把删除部分,替代新字符串
select stuff('你看这个彬彬就是逊啊!', 2, 5, '不')	--结果:你不就是逊啊!

substring()

截取指定长度的字符串

--substring(内容, 开始位置, 长度)
select substring('开玩笑,我超勇的好不好?', 5, 4)    --结果:我超勇的

ltrim()

删除起始空格后返回字符表达式

rtrim()

截断所有尾随空格后返回一个字符串

直接看效果↓


upper()

小写转换大写的字符表达式

lower()

大写转换小写的字符表达式

直接看效果↓


replace()

用另一个字符串替换出现的所有指定字符串值

--replace(原内容, 指定内容, 新内容)
select replace('年轻人还是太年轻', '年轻', '老实')    --结果:老实人还是太老实

replicate()

指定的次数重复字符表达式

--replicate(内容, 个数)
select replicate('*', 5)	--结果:*****

space()

返回指定个数的空格表达式

--space(空格个数)
select '字段1' + space(2) + '字段2'		--结果:字段1  字段2

reverse()

倒置字符串内容

select reverse('你是年少的欢喜')	--喜欢的少年是你

cast()

转换数据的类型

--cast(内容 as 转换类型)
select cast(123.5 as int)					--结果:123
select cast(123.5 as varchar(5))			--结果:123.5
select cast(123.5 as decimal(18,2))			--结果:123.50

case()

简单的条件判断转换

"SQL学习计划二"第17题就有用到,看下图就能理解了。

标签:rand,函数,结果,--,---,SQL,字符串,上次,select
来源: https://blog.csdn.net/Mr_OOR/article/details/122260596