设为首页 收藏本站
查看: 1560|回复: 0

[经验分享] SQL Server 常用函数使用方法(持续更新)

[复制链接]

尚未签到

发表于 2017-7-13 12:30:34 | 显示全部楼层 |阅读模式
  之前就想要把一些 SQL 的常用函数记录下来,不过一直没有实行。。。嘿嘿。。。
  直到今天用到substring()这个函数,C# 里面这个方法起始值是 0,而 SQL 里面起始值是 1。傻傻分不清楚。。。
  这篇博客作为记录 SQL 的函数的使用方法,想到哪里用到哪里就写到哪里。。。
  SubString():用于截取指定字符串的方法。该方法有三个参数:
  参数1:用于指定要操作的字符串。
  参数2:用于指定要截取的字符串的起始位置,起始值为 1 。
  参数3:用于指定要截取的长度。



select substring('abcdef',1,3)   
select substring('123456321',0,2)   
  Left():用于返回指定字符串中指定长度的左侧部分。该方法有两个参数:
  参数1:用于指定要操作的字符串。
  参数2:用于指定要返回的子字符串的长度。



select LEFT('abc123',3)        
select LEFT('左侧部分右侧部分',4)   
  Right():用于返回指定字符串中指定长度的右侧部分。该方法有两个参数:
  参数1:用于指定要操作的字符串。
  参数2:用于指定要返回的子字符串的长度。



select RIGHT('abc123',3)        
select RIGHT('左侧部分右侧部分',4)   
  CharIndex():用于返回指定字符串中指定子字符串出现的起始位置。如果未找到就返回 0。该方法有两个参数:
  参数1:用于指定要进行查找的字符串。
  参数2:用于指定用作检索的字符串。



select charindex('a','123a123')        
select charindex('abc','123a123')   
select charindex('abc','123abc123')   
  Stuff():用于删除指定长度的字符,并在删除的位置插入新的字符/值。该方法有四个参数:
  参数1:用于指定要操作的字符串。
  参数2:用于指定要删除字符的起始位置。
  参数3:用于指定要删除字符的长度。
  参数4:用于指定在删除的位置插入的新的字符串/值。



select stuff('123abc456',4,3,'ABC')        
select stuff('123abc456',1,3,'')   
  Len():用于返回指定文本的值的长度。前导空格计算在内,尾随空格不计算在内。该方法有一个参数:
  参数1:用于指定要操作的文本或字符串。



select len('123')   
select len('字符串')   
  Difference():用于返回一个整数值,指示两个字符表达式的 SOUNDEX 值之间的差异。(即两个字符串的相似度)那么什么是 SOUNDEX 值呢?先记着,下面轮到它了。
  返回的值从 0 到 4 不等:0 表示几乎不同或完全不同,4 表示几乎相同或完全相同。该方法有两个参数:
  参数1:用于指定要进行比对的第一个字符串 SOUNDEX 值 。
  参数2:用于指定要进行比对的第二个字符串 SOUNDEX 值。



select difference('action','demo')        
select difference('123456','整数')        
  Soundex():用于返回指定字符串的 SOUNDEX 值。SOUNDEX是一种语音算法,利用英文字的读音计算近似值,值由四个字符构成,第一个字符为英文字母,后三个为数字。在拼音文字中有时会有会念但不能拼出正确字的情形,可用 Soundex 做类似模糊匹配的效果。这里的模糊匹配跟 LIKE 不同。
  算法简要说明:




a e h i o u w y -> 0
b f p v -> 1
c g j k q s x z -> 2
d t -> 3
l -> 4
m n -> 5
r -> 6
  如果字符串中存在拥有相同对应数字的2个或以上的字母在一起(例如 j 和 k),则删除其他的,只保留1个。去除对应值为 0 的字符,只返回前4个字节,不够用 0 填充。



select soundex('string')   
select soundex('str')   


select soundex('123')   
select soundex('字符串')   
  PS:除英文字符以外的字符都将返回 0000,所以上面的方法 Difference() 的第二个示例会返回4(表示完全相同)。
  Lower():用于返回指定英文字符串的小写形式的字符串。如果不为英文字符串,则返回原值。该方法有一个参数:
  参数1:用于指定要转换为小写形式的字符串。



select lower('ABC')        
select lower('123')   
  Upper():用于返回指定英文字符串的大写形式的字符串。如果不为英文字符串,则返回原值。该方法有一个参数:
  参数1:用于指定要转换为大写形式的字符串。



select upper('abc')        
select upper('123')   
  Ltrim():用于返回删除前导空格之后的字符串。该方法有一个参数:
  参数1:用于指定要进行删除前导空格操作的字符串。



select ltrim('        123')        
select ltrim('        好多空格')   
select len('        123')   
select len(ltrim('        123'))  
  Rtrim():用于返回截断尾随空格之后的字符串。该方法有一个参数:
  参数1:用于指定要进行截断尾随空格操作的字符串。



select rtrim('123         ')        
select len(rtrim('123         '))  
  Replace():用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。该方法有三个参数:
  参数1:用于指定要操作的字符串,即被匹配的字符串。
  参数2:用于指定要进行匹配的字符串。
  参数3:用于指定用作替换存在的匹配项的字符串。




select replace('123abc456','abc','xxx')        

select replace('123abc456','abc','')   
  Unicode():根据 Unicode 标准返回指定字符或字符串的第一个字符的整数值。该方法有一个参数:
  参数1:用于指定要操作的字符或字符串。



select unicode('a')        
select unicode('abc')   
  NChar():根据 Unicode 标准返回指定整数值代码的 Unicode 字符。该方法有一个参数:
  参数1:指定一个 Unicode 标准的整数值代码。



select nchar(97)   
select nchar(65)   
  Char():将指定的 int 类型的值转换为 ASCII 代码。该方法有一个参数:
  参数1:指定一个 int 类型的数值,值范围为 0 至 255。返回 null 表示整数表达式不是在此范围内。



select char(99)   
select char(9)   
select char(10)   
select char(13)   
  ASCII():返回指定字符或字符串的第一个字符的 ASCII 代码值。该方法有一个参数:
  参数1:用于指定要操作的字符或字符串。



select ascii('A')   
select ascii('a')   
  PS:ASCII() 用于操作单字节,双字节请使用 Unicode()。全角字符为双字节、中文字符为双字节。
  示例:



select unicode('字符串')   
select nchar('23383')   
select char('23383')   
select ascii('字符串')   
select nchar('215')   
select char('215')   
select ascii('Kan')   
select nchar('75')   
select char('75')   
  Str():返回一个指定数值的等效字符串。该方法有三个参数:
  参数1:指定要操作的数值。
  参数2:指定要返回字符串的长度。默认值为10,即不指定默认长度为10,不足用空字符填充。
  参数3:要返回的小数位数。默认值为0,即不指定就不保留小数,不足指定位数,用0补充。



select str(123.10)   
select len(str(123.10))   
select str(123.10,5)   
select len(str(123.10,5))   
select str(123.10,20,5)        
select len(str(123.10,20,5))   
  Space():用于返回指定数值长度的空格字符串。该方法有一个参数:
  参数1:指定返回空格字符串的长度。



select '1'+space(3)+'2'        
select len('1'+space(3)+'2')   
  Reverse():用于对指定字符串进行反转,按照单个字符进行反转。该方法有一个参数:
  参数1:指定需要执行反转操作的字符串。



select reverse('123')   
select reverse('abc')   
  Replicate():用于返回一个对指定字符串重复指定次数后的字符串。该方法有两个参数:
  参数1:用于指定要操作的字符串。
  参数2:用于指定字符串重复的次数。如果为0,返回空字符串;如果为负数,则返回 null。



select replicate('123',3)   
select replicate('a',3)        
  Quotename():返回一个 Unicode 字符串,根据指定分隔符,返回一个有效的字符串标识符。该方法有两个参数:
  参数1:用于指定要操作的字符串。
  参数2:用于指定分隔符,可以是单引号(')、左括号([)、右括号(])、左右括号([])或双引号(")。如果未指定,默认使用左右括号。



select quotename('123','[]')   
select quotename('123','''')   
select quotename('123','"')        
select quotename('12[]3','[]')   
  Patindex():返回指定字符串表达式中指定模式第一次出现的起始位置,未找到则返回0。该方法有两个参数:
  参数1:指定要匹配的字符串及匹配模式。
  参数2:指定要被匹配的字符串表达式。



select Patindex('abc','123abc456abc789')   
select Patindex('abc','abc')   
select Patindex('abc%','123abc456abc789')   
select Patindex('%abc%','123abc456abc789')   
select Patindex('%[abc]%','123abc456abc789')   
select Patindex('%[^abc]%','123abc456abc789')   
select Patindex('%[^abc]%','b123abc456abc789')   
  Parsename():返回对象名称的指定部分。 可检索的对象部分包括对象名称、所有者名称、数据库名称和服务器名称。其实也可以用于截取字符串。该方法有两个参数:
  参数1:要检索其指定部分的对象的名称。此名称可包含四部分:服务器名称、数据库名称、所有者名称以及对象名称。
  参数2:要返回的对象部分。只能为1至4的数值。1 = 对象名称;2 = 架构名称;3 = 数据库名称;4 = 服务器名称



select parsename('server.dbo.dbTest.table',1) tablename,
parsename('server.dbo.dbTest.table',2) dbname,
parsename('server.dbo.dbTest.table',3) schemaname,
parsename('server.dbo.dbTest.table',4) servername
DSC0000.png

  这种截取方式类似于字符串分割,不过这里是倒着截取的,所以在一定程度上可以用于字符串的截取。不过只支持小数点(.)的分割,而且只支持四位。



select parsename('192.168.1.1',4) col1,
parsename('192.168.1.1',3) col2,
parsename('192.168.1.1',2) col3,
parsename('192.168.1.1',1) col4
DSC0001.png

  Getdate():获取当前日期时间。



select getdate()
DSC0002.png

  Year():获取指定日期表达式的年。该方法有一个参数:
  参数1:指定要操作的日期表达式。



select year('2016-01-01')   
select year('2017-01-01 12:30:30')   
select year(getdate())   
  Month():获取指定日期表达式的月。该方法有一个参数:
  参数1:指定要操作的日期表达式。



select month('2016-01-01')   
select month('2017-10-01 12:30:30')   
select month(getdate())   
  Day():获取指定日期表达式的日。该方法有一个参数:
  参数1:指定要操作的日期表达式。



select day('2016-01-01')   
select day('2017-10-03 12:30:30')   
select day(getdate())   
  Isdate():用于判断指定的字符串表达式是否为日期。返回 1,表示指定字符串表达式是日期。返回 0,表示指定字符串表达式不是日期。该方法有一个参数:
  参数1:用于指定要操作的字符串表达式。



select isdate('10/30/2017')        
select isdate('30/10/2017')        
select isdate('2017/10/30')        
select isdate('02/29/2017')        
select isdate('2017-01-01')        
select isdate('2017-01-01 10:10:10')   
select isdate('01-01-2017')        
select isdate('01-01-2017 10:10:10')   
  Datename():返回指定日期的指定日期的部分的字符串。该方法有两个参数:
  参数1:指定返回指定日期的指定部分的字符串。可以为下图中的日期部分或者缩写。
  参数2:指定要操作的日期字符串。
DSC0003.png




select datename(year,'2017-01-01 10:10:10')   
select datename(yyyy,'2017-01-01 10:10:10')   
select datename(month,'2017-01-01 10:10:10')   
select datename(mm,'2017-01-01 10:10:10')   

select datename(quarter,'2017-05-02 10:10:10')        
select datename(weekday,'2017-02-02 10:10:10')        
select datename(week,'2017-02-02 10:10:10')        
select datename(dayofyear,'2017-02-02 10:10:10')        
select datename(hh,'2017-01-01 10:30:25')   
  Datepart():返回指定日期的指定日期的部分的整数。Datepart() 方法和 Datename() 的方法使用方式类似,只不过 Datename() 方法返回的是一个字符串,而 Datepart() 方法返回的是一个整数数值。该方法有两个参数:
  参数1:指定返回指定日期的指定部分的字符串。可以为上图中的日期部分或者缩写。
  参数2:指定要操作的日期字符串。



select datepart(year,'2017-01-01 10:10:10')   
select datepart(yyyy,'2017-01-01 10:10:10')   
select datepart(month,'2017-01-01 10:10:10')   
select datepart(mm,'2017-01-01 10:10:10')   

select datepart(quarter,'2017-05-02 10:10:10')        
select datepart(weekday,'2017-02-02 10:10:10')        
select datepart(week,'2017-02-02 10:10:10')        
select datepart(dayofyear,'2017-02-02 10:10:10')        
select datepart(hh,'2017-01-01 10:30:25')   
  Coalesce():返回所有参数中的第一个非空(not null)表达式。该方法最多可以有 n 个参数,但是最少要有两个参数。



SELECT COALESCE('abc','')   
SELECT COALESCE(NULL,'')   
SELECT COALESCE(null,null,'123','abc')   
  PS:这个函数是返回第一个非空的值,所以参数里面必须最少有一个非空的值。
  ISNull():判断指定的表达式一是否为空(null),如果为空则返回表达式二的值,否则返回表达式一的值,类似于C#中的三元运算符。该方法有两个参数:
  参数1:指定要操作的表达式一。
  参数2:指定要操作的表达式二。



select isnull('','123')        
select isnull(null,'123')        
select isnull('123','abc')        
select isnull(null,null)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393410-1-1.html 上篇帖子: SQL Server 日期的加减函数: DATEDIFF DATEADD 下篇帖子: Microsoft SQL Server 2016 RC3 安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表