随机生成<1的小数
select rand() --结果:类似0.1998050720000710...
返回 ≤ 所给数字表达式的最大整数
我的理解:有小数就只取整数部分,没有小数就是它本身
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
返回 ≥ 所给数字表达式的最大整数
我的理解:有小数就整数部分+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
查找字符或字符串在另一个字符串的起始位置,返回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 条件
查找字符或字符串在另一个字符串或表达式中的起始位置
跟charindex()不同于能加'通配符',也因此固定从第0位开始找
对于变化的搜索字符串很有价值
--patindex('查找内容', 删除内容)
select patindex('上次%', '上次学习还是在上次') --结果:1, 以此为开头
select patindex('%上次', '上次学习还是在上次') --结果:8, 以此为结尾
select patindex('%上次%', '上次学习还是在上次') --结果:1, 返回第一个的位置
select patindex('上次', '上次学习还是在上次') --结果:0, 因为不一致
select patindex('上次学习还是在上次', '上次学习还是在上次') --结果:1, 一致
--若不写where,则查找该字段列所有内容
select patindex('查找内容', 字段) from 表 where 条件
删除指定长度的字符,或在指定起点处插入另一组字符,返回字符串类型
--stuff(列名, 开始位置, 删除长度, 替代字符串)
select stuff('你看这个彬彬就是逊啊!', 2, 5, '') --结果:你就是逊啊!
--把删除部分,替代新字符串
select stuff('你看这个彬彬就是逊啊!', 2, 5, '不') --结果:你不就是逊啊!
截取指定长度的字符串
--substring(内容, 开始位置, 长度)
select substring('开玩笑,我超勇的好不好?', 5, 4) --结果:我超勇的
删除起始空格后返回字符表达式
截断所有尾随空格后返回一个字符串
直接看效果↓
小写转换大写的字符表达式
大写转换小写的字符表达式
直接看效果↓
用另一个字符串替换出现的所有指定字符串值
--replace(原内容, 指定内容, 新内容)
select replace('年轻人还是太年轻', '年轻', '老实') --结果:老实人还是太老实
指定的次数重复字符表达式
--replicate(内容, 个数)
select replicate('*', 5) --结果:*****
返回指定个数的空格表达式
--space(空格个数)
select '字段1' + space(2) + '字段2' --结果:字段1 字段2
倒置字符串内容
select reverse('你是年少的欢喜') --喜欢的少年是你
转换数据的类型
--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题就有用到,看下图就能理解了。