热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQL高级函数

rand()随机生成


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题就有用到,看下图就能理解了。



推荐阅读
author-avatar
杀你哥_52544
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有