SQL Server2012 T-SQL基础教程(二)

字符串操作函数

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’!’)。也可以使用[]包起来(例:'[_]’匹配下划线)

    原文作者:bitsman
    原文地址: https://segmentfault.com/a/1190000009112429
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞