字符串操作函数
1.拼接字符串
拼接字符串可以通过 + 来实现拼接,使用这个方法存在一个缺点,当需要拼接的字符串为NULL时,由于T-SQL中定义NULL + NULL 仍然为 NULL,所以导致拼接结果出错。当然也可以在拼接字符串的时候使用ISNULL
方法提供默认值。
SELECT firstname + ' '+ lastname FROM dbo.A --假设输出 "Name 非白即黑"
#当lastname 为 NULL时
SELECT firstname + ' '+ ISNULL(lastname,'') FROM dbo.A --输出 "Name "
使用CONCAT
函数,他可以接受要拼接的字符串,当字符串中存在NULL时,会自动将NULL替换为空字符串。
SELECT CONCAT('Name:' ,NULL , N'非白即黑') --输出 'Name:非白即黑'
2.计算字符串的长度和所占的字节数
使用LEN
函数计算字符串的长度,不计算字符串末位的空格数量
SELECT LEN('AABBCCDD ') --输出 '8'
使用DATALENGTH
函数计算字符串所占的字节数,末位空格也算。
SELECT DATALENGTH('AABBCCDD ') --输出 '9'
SELECT DATALENGTH('你好 ') --输出 '5'
SELECT DATALENGTH(N'你好A ') --输出 '8'
3.替换字符串中的指定字符
REPLACE
函数可以实现对字符串中指定的字符进行替换
SELECT REPLACE(N'非白即黑',N'非白',N'Name:非白') --输出 'Name:非白即黑'
此方法可以计算某一个字符或者是字符串在目标字符串中出现的次数
SELECT LEN('AABBCCDD') - LEN(REPLACE('AABBCCDD','A','')) --输出 '2'
4.类型转换
CAST
函数实现对字符串的类型转换。
SELECT CAST('123' AS INT) --输出 '123',当类型转化失败的时候,抛出异常.
5.计算字符串在目标字符串中的位置
CHARINDEX
函数实现计算字符串第一次出现的位置
SELECT CHARINDEX(',NAME1,',',NAME1,AGE1,SEX1,') --输出'1',当结果为0的时表示所要查找的字符串不在目标字符串当中。
此函数可以用于实现批量删除
DELETE FROM dbo.A WHERE CHARINDEX(','+CAST(id as varchar(10))+',',@idstr) > 0
--其中@idstr为',1,2,3,4,5,6,7,'....
6.截取子字符串
SUBSTRING
函数可以从一个字符串中截取一个子字符串。
SELECT SUBSTRING('ABCDEFG',1,5) --输出 ’ABCDE’
#位置从1开始,截取长度为5,如果所截取的数量超出了输入字符串的末尾,不会引发错误,会直接截取到末尾
SELECT SUBSTRING('ABCDEFG',1,100) --输出 ‘ABCDEFG’
7.从字符串两侧返回指定数量的字符串,类似于SUBSTRING
的快捷方式
LEFT
函数返回字符串左侧指定数量的字符串
SELECT LEFT('ABCDEFG',3) --输出‘ABC’
RIGHT
函数返回字符串右侧指定数量的字符串
SELECT RIGHT('ABCDEFG',3) --输出‘EFG’
8.查找符合某个模式的字符串在目标字符串中的位置
PATINDEX
函数返回模式在字符串中第一次出现的位置。
SELECT PATINDEX('%[A-E]%','123ABC456') --输出‘4’
#第一个参数模式,类似于正则表达,但是在T-SQL中还是和正则表达式有区别的,总之大同小异。
9.按照指定次数重复一个字符串
REPLICATE
函数可以按照指定的次数重复一个字符串
SELECT REPLICATE('ABC',3) --输出‘ABCABCABC’
10.从目标字符串中移除指定字符串,并插入一个替代的新子字符串。
STUFF
函数可以移除字符串并插入新的字符串代替
SELECT STUFF('ABCDEFG',2,3,'HI') --输出 ‘AHIEFG’
#若想在某个字符之后插入新的字符,可以设置移除0个字符
SELECT STUFF('ABCDEFG',2,0,'HIJ') --输出 ‘AHIJBCDEFG’
#在指定位置之前开始算移除的个数,所以是在第一个字符之后插入的。
11.转换大小写
UPPER
函数转化字符串为大写
SELECT UPPER('abcdeFG') --输出‘ABCDEFG’
LOWER
函数转化字符串为小写
SELECT LOWER('abcdeFG') --输出‘abcdefg’
12.去掉字符串两侧的空格
LTRIM
函数去掉字符串左侧的空格
SELECT LTRIM(' ABCDEFG') --输出‘ABCDEFG’
RTRIM
函数去掉字符串右侧的空格
SELECT RTRIM('ABCDEFG ') --输出‘ABCDEFG’
要想去掉两侧的空格
SELECT LTRIM(RTRIM(' ABCDEFG ')) --输出 ‘ABCDEFG’
13.模糊匹配
LIKE
谓词可以实现模糊匹配,模糊匹配的规则如下(类似于正则表达式):1)%
匹配任意多个字符。
2)_
匹配一个字符
3)[<charset>]
匹配字符集合中的一个
4)[<char1>-<char2>]
匹配字符char1到char2之间的字符
5)[^<char>]
3) 4)条规则的取反
6)ESCAPE
使用转义符号当作通配符号(例:'%!_%'ESCAPE'!')。也可以使用[]包起来(例:'[_]'匹配下划线)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。