SQL基础:SQL Server中常用截取字符串函数介绍

1. LEFT和RIGHT函数

LEFT和RIGHT函数都是用来截取字符串的函数,LEFT返回字符串左边指定长度的字符,RIGHT返回字符串右边指定长度的字符。

LEFT函数的语法如下:

LEFT (str, length)
其中str为要截取的字符串,length为截取的长度。示例代码如下:

SELECT LEFT('ABCDEFG', 3) AS Result

执行以上代码,结果为:

Result

-------

ABC

RIGHT函数的语法如下:

RIGHT (str, length)
其中str为要截取的字符串,length为截取的长度。示例代码如下:

SELECT RIGHT('ABCDEFG', 3) AS Result

执行以上代码,结果为:

Result

-------

EFG

2. SUBSTRING函数

SUBSTRING函数可以根据指定位置和长度截取字符串,语法如下:

SUBSTRING(str, start, length)

其中str为要截取的字符串,start为要截取的起始位置(从1开始),length为要截取的长度。示例代码如下:

SELECT SUBSTRING('ABCDEFG', 2, 3) AS Result

执行以上代码,结果为:

Result

-------

BCD

2.1 使用SUBSTRING截取身份证号中的生日

SUBSTRING函数常用于截取复杂字符串中的某些信息,下面以身份证号为例,演示如何使用SUBSTRING函数截取生日。

DECLARE @IDCard VARCHAR(18) = '450902199001231234'

SELECT SUBSTRING(@IDCard, 7, 8) AS Birthday

执行以上代码,结果为:

Birthday

----------

19900123

可以看到,通过截取身份证号中从第7个字符开始,并且长度为8的字符,我们就成功的获取到了出生日期。

3. CHARINDEX函数

CHARINDEX函数用于返回指定字符串在目标字符串中第一次出现的位置,语法如下:

CHARINDEX (expression1, expression2 [, start_location ] )

其中expression1是要查找的字符串,expression2是目标字符串,start_location为开始查找的位置。示例代码如下:

SELECT CHARINDEX('A', 'ABCDEFG') AS Result

执行以上代码,结果为:

Result

-------

1

3.1 使用CHARINDEX截取URL中的域名

下面以URL为例,演示如何使用CHARINDEX函数截取域名。

DECLARE @URL VARCHAR(MAX) = 'https://www.baidu.com/search?wd=SQL%20Server'

SELECT SUBSTRING(@URL, CHARINDEX('//', @URL) + 2, CHARINDEX('/', @URL, CHARINDEX('//', @URL)) - CHARINDEX('//', @URL) - 2) AS Domain

执行以上代码,结果为:

Domain

--------

www.baidu.com

可以看到,通过CHARINDEX函数,我们先找到URL中的第一个'//'出现的位置,再找到第二个'/'出现的位置,然后从第一个'//'位置加2开始,截取到第二个'/'位置之前的字符串,就成功的获取到了域名。

4. REPLACE函数

REPLACE函数用于将字符串中的指定部分替换成新的字符串,语法如下:

REPLACE (string_expression ,string_pattern, string_replacement )

其中string_expression为要处理的字符串,string_pattern为要替换的字符串,string_replacement为用来替换的字符串。示例代码如下:

SELECT REPLACE('ABCDEFG', 'CD', '**') AS Result

执行以上代码,结果为:

Result

------

AB**EFG

4.1 使用REPLACE函数替换敏感词

下面以替换敏感词为例,演示如何使用REPLACE函数。

CREATE TABLE SensitiveWords

(

ID INT PRIMARY KEY,

Word NVARCHAR(50) NOT NULL

)

INSERT INTO SensitiveWords (ID, Word) VALUES (1, '敏感词1')

INSERT INTO SensitiveWords (ID, Word) VALUES (2, '敏感词2')

INSERT INTO SensitiveWords (ID, Word) VALUES (3, '敏感词3')

DECLARE @Content NVARCHAR(MAX) = '这里有敏感词1和敏感词2,还有敏感词3'

SELECT @Content AS OriginalContent

SELECT

REPLACE(

REPLACE(

REPLACE(@Content, S.Word, REPLICATE('*', LEN(S.Word)))

, S.Word + ' ', REPLICATE('*', LEN(S.Word) + 1))

, ' ' + S.Word, REPLICATE('*', LEN(S.Word) + 1)) AS FilteredContent

FROM SensitiveWords S

执行以上代码,结果为:

OriginalContent

-----------------------

这里有敏感词1和敏感词2,还有敏感词3

FilteredContent

------------------------------------------

这里有*********和*********,还有*********

可以看到,我们先在数据库中建立了一个敏感词表,然后在Content中查找敏感词,并使用REPLACE函数将其替换成相应数量的*。

总结

以上就是SQL Server中常用的截取字符串函数,LEFT、RIGHT、SUBSTRING、CHARINDEX和REPLACE函数。通过这些函数,我们可以轻松的处理字符串中的各种信息,极大地方便了我们的数据处理。

数据库标签