字符串处理函数

图片 9

1.CONCAT函数

  这一篇文章主要总结开发过程中经常使用到的字符串处理函数,它们在处理字符串时非常有用,那么,总结起来有以下函数。

COALESCE(columnname,string) 函数

SELECT custid, country, region, city,
  country + N',' + region + N',' + city AS location
FROM Sales.Customers;

1,字符串串联运算符

  将 NULL 值作为字符串(用空字符串或其他字符串替换 NULL)-
接受一列输入值(字段)如果该字段为 NULL,则返回后面替换的字符串

对有NULL 数据行加减也为NULL

2,SUBSTRING提取子串

1 SELECT custid,country,region,city,country+N','+region+N','+city AS location FROM Sales.Customers

 图片 1

3,LEFT和RIGHT

图片 2

怎么解决呢 这里就用到了 CONCAT 函数

4,LEN和DATALENGTH

SELECT custid,country,region,city,country+N','+COALESCE(region,N'q')+N','+city AS location FROM Sales.Customers
SELECT custid, country, region, city,
  country + COALESCE( N',' + region, N'') + N',' + city AS location
FROM Sales.Customers;

5,CHARINDEX函数

图片 3

CONCAT(‘A’,NULL,’B’) 接收一个连接字符串输入并主动替换null 为‘’字符串
结果就是 AB

6,PATINDEX函数

SUBSTRING(string,start,length)

2.SUBSTRING函数

7,REPLACE替换

  提取从指定位置开始,具有特定长度的字符串

它可以从字符串提取一个子字符串

8,REPLICATE复制字符串

SELECT SUBSTRING('abcde',2,2);

和c# 截取字符串用法一样 不过下标不是零开始

9,STUFF函数

图片 4

SELECT SUBSTRING('abcde', 1, 3); -- 'abc'

10,UPPER和LOWER函数

LEFT(string,n), RIGHT(string,n)

如果第三个参数超过字符长度也没事 它会默认去整个字符串长度

11,RTRIM和LTRIM函数

  第一个参数是要处理的字符串,第二个参数是要从字符串左边或右边提取字符的个数

3.LEFT和RIGHT函数

字符串串联运算符

由于业务需要,有的时候我们需要将两个字段(列)组合起来,中间加上分隔符,然后输出。这时我们就会用到字符串串联运算符[+]号。例如,我们对Employees表中的firstname,空格和lastname列串联起来,生成完整的姓名fullname列。

SQL查询代码:

-- 设置数据库上下文
USE TSQLFundamentals2008;
GO

-- fullname是串联运算符串联后的结果
SELECT empid,firstname,lastname,firstname+N' '+lastname AS fullname 
FROM hr.Employees

查询结果:

图片 5

需要注意的是,ANSI
SQL规定对NULL值执行串联运算后也会产生NULL值的结果,这是SQL
Server的默认行为。当然,可以通过将名为CONCAT_NULL_YIELDS_NULL的会话选项设置为OFF来改变SQL
Server的默认处理方式,但是要记得,在处理完成后要设置回原来的ON状态。

SELECT LEFT('abcde',2),RIGHT('abcde',2);

其实SUBSTRING 函数简化版

SUBSTRING提取子串

SUBSTRING函数用于从字符串中提取子串。例如,以下代码返回字符串‘abc’.

SQL查询代码:

SELECT SUBSTRING('abcde',1,3);

查询结果:

图片 6

注意:1,一般开始位置是从1开始的。

   2,如果第二个参数和第三个参数的和超过了整个字符串的长度,则函数会返回从起始位置开始,直到字符串结尾的整个字符串而不会引起错误。当需要返回从某个位置开始,直到结尾的所有内容时,可以指定一个非常大的值或者表示整个字符串的长度的值就可以。

图片 7

SELECT RIGHT('abcde', 3); -- 'cde'

SELECT LEFT(N'abcde',3); -- 'abc'

LEFT和RIGHT

LEFT和RIGHT函数是SUBSTRING的简写形式,它们分别返回输入字符串从左或右边开始的指定个数的字符。例如,以下代码返回字符’cde’。

SQL查询代码:

SELECT RIGHT('abcde',3);

查询结果跟SUBSTRING一样。LEFT的使用同RIGHT。

LEN(string),DATALENGTH(string)

4.LEN和DATALENGTH函数

LEN和DATALENGTH

LEN函数返回输入字符串的字符数。而DATALENGTH函数返回输入字符串的字节数。需要注意它们的区别。LEN的语法形式为:LEN(string),DATALENGTH的语法形式为:DATALENGTH(string)

例如,以下代码返回字符串的字符数5

SQL查询代码:

SELECT LEN(N'abcde');

查询结果输出:5

而如果使用DATALENGTH函数则输出:10。

  LEN 函数返回字符数,DATALENGTH 函数返回字节数

SELECT LEN(N'abcde'); -- 5

SELECT DATALENGTH(N'abcde'); -- 10

CHARINDEX函数

CHARINDEX函数返回字符串中某个子串第一次出现的起始位置。它的语法形式为:CHARINDEX(substring,string[,start_pos]),该函数在第二个参数(string)中搜索第一个参数(substring),并返回其起始位置,可以选择性地指定第三个参数(start_pos),以便告诉这个函数从字符串的什么位置开始搜索,如果不指定的话,则从字符串的第一个字符串开始搜索。如果在string中找不到substring,则函数返回0。

例如,以下代码在’trac mcgrady’中查找第一个空格的位置,结果将返回5

SQL查询代码:

SELECT CHARINDEX(' ','trac mcgrady');
SELECT LEN(N'ABCDE'),DATALENGTH(N'ABCDE');

LEN 返回字符数  DATALENGTH 返回字节数   LEN会删除尾随空格 但 DATALENGTH 
不会

PATINDEX函数

PATINDEX函数返回字符串中某个模式第一次出现的起始位置。它的语法形式为:PATINDEX(pattern,string)

例如,我们需要在字符串中找到第一次出现数字的位置。

SQL查询代码:

SELECT PATINDEX('%[0-9]%','abcd123efgh');

查询结果:5

图片 8

5.CHARINDEX 函数

REPLACE替换

REPLACE函数将字符串中出现的某个子串替换为另一个字符串。它的语法形式为:REPLACE(string,substring1,substring2),该函数会将string中出现的所有substring1替换为substring2。

例如,以下代码将输入字符串中的所有连字符(-)替换为冒号(:)

SQL查询代码:

SELECT REPLACE('1-a 2-b','-',':');

查询结果:1:a 2:b

CHARINDEX(substring,string[,start_pos])

SELECT CHARINDEX(' ','Itzik Ben-Gan'); -- 6

REPLICATE复制字符串

REPLICATE函数以指定的次数复制字符串值。它的语法形式为:REPLICATE(string,n)

例如,以下代码将字符串‘abc’复制三次,返回字符串’abcabcabc’。

SQL查询代码:

SELECT REPLICATE('abc',3);

查询结果:’abcabcabc’

下面这个例子显示了REPLICATE函数,以及RIGHT函数和字符串串联的用法。以下对Production.Suppliers的查询为每个供应商的整数ID生成一个10位数字的字符串表示(不足10位时,前面补‘0’)

SQL查询代码:

-- 设置数据库上下文
USE TSQLFundamentals2008;
GO

SELECT supplierid,
    RIGHT(REPLICATE('0',9)+CAST(supplierid AS VARCHAR(10)),10) AS strsupplierid
FROM Production.Suppliers
ORDER BY supplierid

查询结果:

图片 9

  在第二个参数中搜索第一个参数,并返回其起始位置。可以选择性的指定第三个参数,函数将从字符串指定位置开始搜索,默认从第一个字符开始搜索。如果在string中找不到substring,则返回0

返回空格在 后面字符串第一次出现位置

STUFF函数

STUFF函数可以先删除字符串中的一个子串,然后再插入一个新的子串作为替换。它的语法形式为:STUFF(string,pos,delete_length,insertstring)

例如,以下代码对字符串‘xyz’进行处理,先删除其中的第二个字符,再插入字符串’abc’.

SQL查询代码:

SELECT STUFF('xyz',2,1,'abc');

查询结果:’xabcz’

SELECT CHARINDEX(N'C',N'AB CDE');
You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图