字符串截取 sql(3.SQL字符串截取技巧)
本文目录
3.SQL字符串截取技巧
有时我们会临时写一些SQL脚本来统计一些东西,或者是提供视图或者存储过程给第三方使用。但是有些内容是串联起来存在一个字段中的。 比如:sMZ(民族) sLx(联系方式) 01/汉族 tel:123456/qq:87654321/phone:13812345678 SELECT SUBSTRING(’01/汉族’,4,2) 汉族 SELECT RIGHT(’01/汉族’,2) 汉族 --也是一样的 取民族很简单 如果要取手机号phone 就比较麻烦了,因为我们不知道QQ是几位的 或者qq电话可能没有填写了,单纯依靠字段长度截取不了的。 这样就需要变通下了: SELECT SUBSTRING(’tel:123456/qq:87654321/phone:13812345678’, charindex(’/phone’,’tel:123456/qq:87654321/phone:13812345678’)+1,1000) 使用charindex获取’/phone’字符的其实位置 嵌套SUBSTRING截取 如果在MySQL中还可以这样: substring_index(’tel:123456/qq:87654321/phone:13812345678’, ’/’, -1) ’phone:13812345678’ 截取第一个 ’/’ (倒数)之后的所有字符 substring_index(’tel:123456/qq:87654321/phone:13812345678’, ’/’, 1) ’tel:123456’ 截取第一个 ’/’ 之前的所有字符
SQL截取字符串函数分享
A.截取从字符串左边开始N个字符Declare@S1varchar(100)Select***隐藏网址***SelectLeft(@S1,4)------------------------------------显示结果:***隐藏网址***B.截取从字符串右边开始N个字符(例如取字符www.163.com)Declare@S1varchar(100)Select***隐藏网址***Selectright(@S1,11)------------------------------------显示结果:www.163.comC.截取字符串中任意位置及长度(例如取字符www)Declare@S1varchar(100)Select***隐藏网址***SelectSUBSTRING(@S1,8,3)------------------------------------显示结果:www以上例子皆是已知截取位置及长度,下面介绍未知位置的例子2.截取未知位置的函数***隐藏网址***方法一:Declare@S1varchar(100)Select***隐藏网址***SelectSubstring(@S1,CHARINDEX(’www’,@S1)+1,Len(@S1))/*此处也可以这样写:SelectSubstring(@S1,CHARINDEX(’//’,@S1)+2,Len(@S1))*/------------------------------------显示结果:www.163.com需要注意:CHARINDEX函数搜索字符串时,不区分大小写,因此CHARINDEX(’www’,@S1)也可以写成CHARINDEX(’WWW’,@S1)方法二:(与方法一类似)Declare@S1varchar(100)Select***隐藏网址***SelectSubstring(@S1,PATINDEX(’%www%’,@S1)+1,Len(@S1))--此处也可以这样写:SelectSubstring(@S1,PATINDEX(’%//%’,@S1)+2,Len(@S1))------------------------------------显示结果:www.163.com函数PATINDEX与CHARINDEX区别在于:前者可以参数一些参数,增加查询的功能方法三:Declare@S1varchar(100)Select***隐藏网址***Select***隐藏网址***------------------------------------显示结果:www.163.com利用字符替换函数REPLACE,将除需要显示字符串外的字符替换为空方法四:Declare@S1varchar(100)Select***隐藏网址***Select***隐藏网址***------------------------------------显示结果:www.163.com函数STUFF与REPLACE区别在于:前者可以指定替换范围,而后者则是全部范围内替换B.截取指定字符后的字符串(例如截取C:\Windows\test.txt中文件名)与A不同的是,当搜索对象不是一个时,利用上面的方法只能搜索到第一个位置方法一:Declare@S1varchar(100)Select@S1=’C:\Windows\test.txt’selectright(@S1,charindex(’\’,REVERSE(@S1))-1)-------------------------------------显示结果:text.txt利用函数REVERSE获取需要截取的字符串长度
sql截取字符串!
declare@snvarchar(200),@s0nvarchar(20),@s1nvarchar(200),@s2nvarchar(200)set@s0=’默认风格’set@s=’默认风格|#007168|23|紫色风格|#E8D6FE|21|蓝色风格|#bad2fe|22’declare@r1int,@r2intifsubstring(@s,len(@s),1)《》’|’set@s=@s+’|’set@r1=charindex(@s0,@s)--文字开始位置select@s1=substring(@s,@r1+len(@s0)+1,len(@s))--文字+“|”以后的子串set@r2=@r1+charindex(’|’,@s1)+len(@s0)--子串中第一个“|”相对于原串的起始位置set@s2=substring(@s1,charindex(’|’,@s1)+1,len(@s1))--第一个“|”后的子串set@r2=@r2+charindex(’|’,@s2)printsubstring(@s,1,@r1-1)+substring(@s,@r2+1,len(@s))你可以把@s0改成任意的什么“风格”。把这段代码修改一下,可以作成一个函数,把@s0和@s作为参数,最后的print作为返回值。
更多文章:
nba2k13下载中文版(我想下载nba2k13用电脑玩,应该在哪下,求下载地址)
2024年8月10日 02:46
欢乐海岛小船怎样升级啊?不用消费钻石购买的欢乐海岛建筑有哪些
2024年6月4日 10:08
智能制造解决方案(国内家居智能制造数字化解决方案供应商豪迈中国怎么样)
2024年3月16日 13:05
logo设计图片免费(公司logo设计,公司logo设计,求推荐)
2024年6月30日 05:41