3522vip-澳门新葡亰平台官网-www.3522vip.com

3522vip☞(www.rivieraquest.com)能够为大家带来真正的真钱享受,澳门新葡亰平台官网开创业内先河,注册,开户,登录开始体验不同的娱乐世界,全国第一家以娱乐产品为主体对象的专业平台,菲律宾全资子公司成立,天天免费68周周再送168。

3522vip > 网络数据库 > SQL-字符串运算符和函数

原标题:SQL-字符串运算符和函数

浏览次数:183 时间:2019-11-30

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');

6.PATINDEX 函数

UPPER和LOWER函数

UPPER和LOWER函数用于将输入字符串中的所有字符都转换为大写或小写形式。它们的语法形式为:UPPER(string),LOWER(string)。

例如,第一个函数返回'TRAC MCGRADY',第二个函数返回'trac mcgrady'。

-- 返回'TRAC MCGRADY'
SELECT UPPER('trac mcgrady');

-- 返回‘trac mcgrady’
SELECT LOWER('Trac Mcgrady');

图片 10

模糊查询条件 在字符串中出现的位置

RTRIM和LTRIM函数

RTRIM和LTRIM函数用于删除输入字符串的尾部空格和前导空格。它们的语法形式为:RTRIM(string),LTRIM(string)。如果既想删除前导空格,也想删除尾部空格,则可以将一个函数的结果作为另一个函数的输入来使用。例如,以下代码会删除输入字符串的前导空格和尾部空格,最后返回‘abc’

SQL查询代码:

-- 返回'abc'
SELECT RTRIM(LTRIM(' abc '));

PATINDEX(pattern,string)

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

  参数 pattern 使用的模式与 T-SQL 中 LIKE 谓词使用的模式类似。

找寻 数字在后面字符串第一次出现的位置

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

7.REPLACE函数

图片 11

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

REPLACE(string,substring1,substring2)

替换函数 也可以用来计算字符串中字符出现的次数

  将 string 中出现的所有 substring1 替换为 substring2。

SELECT empid, lastname,
  LEN(lastname) - LEN(REPLACE(lastname, 'e', '')) AS numoccur
FROM HR.Employees;
SELECT REPLACE('1-A 2-B','-',':');

获取字符串中E出现的次数  当前长度减替换后的长度

图片 12

8.REPLICATE函数

用 REPLACE 和 LEN 函数返回某个字符串中字符出现的次数

SELECT REPLICATE('abc', 3); -- 'abcabcabc'
SELECT LEN('I''M ZHANGSAN,FROM CHINA')-LEN(REPLACE('I''M ZHANGSAN,FROM CHINA',' ',''));

复制字符串  通常可用它来生成订单号 例如

图片 13

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

REPLICATE(string,n)

图片 14

  将string复制n遍

 

SELECT REPLICATE('ABC',3);

复制9个0 对id类型统一后从右取10个字符   可以根据需求定制类型

图片 15

9.STUFF 函数

REPLACE 函数,RIGHT 函数和字符串串联的用法

允许从字符串中移除指定数量字符串 并插入新子字符串

SELECT supplierid,RIGHT(REPLICATE('0',9) CAST(supplierid AS VARCHAR(10)),10) AS strsupplierid FROM Production.Suppliers;
SELECT STUFF('xyz', 2, 1, 'abc'); -- 'xabcz'

图片 16

第一个参数 字符串 第二个参数 开始移除位置    第三个参数 移除几个字符   第三个参数 移除的字符要替换成什么字符

STUFF(string,pos,delete_length,insertstring)

10.UPPER和LOWER 函数

  对输入参数 string 进行处理,从 pos 指定的位置开始删除 delete_length 指定长度的字符;然后将 insertstring 插入到 pos 指定的位置

SELECT UPPER('Itzik Ben-Gan'); -- 'ITZIK BEN-GAN'

SELECT LOWER('Itzik Ben-Gan'); -- 'itzik ben-gan'
SELECT STUFF('XYZ',2,1,'ABC');

大小写互转

图片 17

11.RTRIM和LTRIM 函数

UPPER(string),LOWER(string)

SELECT RTRIM(LTRIM('   abc   ')); -- 'abc'

  UPPER 函数将字符串转换为大写,LOWER将字符串转换为小写

它们分别是删除 前空格 和后空格

SELECT UPPER('abc'),LOWER('ABC')

12.FORMAT 函数

图片 18

类似于字符串格式拼接

RTRIM(string),LTRIM(string)

SELECT FORMAT(1759, 'd10'); -- '0000001759'
SELECT FORMAT(1759, '0000000000'); -- '0000001759'

  RTRIM 删除尾空格,LTRIM 删除前导空格

自定义格式化字符串输入 可以有多种选择  官方参考链接 

SELECT RTRIM(' A B C '),LTRIM(' A B C '),RTRIM(LTRIM(' A B C '));

13.LIKE 谓词函数

图片 19

SELECT empid, lastname
FROM HR.Employees
WHERE lastname LIKE N'D%';

 

返回开头是D的用户

SELECT empid, lastname
FROM HR.Employees
WHERE lastname LIKE N'_e%';

返回开头第二个是e的用户

SELECT empid, lastname
FROM HR.Employees
WHERE lastname LIKE N'[ABC]%';

返回开头是A或B或C 的用户

SELECT empid, lastname
FROM HR.Employees
WHERE lastname LIKE N'[A-E]%';

返回开头是A到E 的用户

SELECT empid, lastname
FROM HR.Employees
WHERE lastname LIKE N'[^A-E]%';

返回不是A到E开头的用户  如果通配符用特殊需要转译 的用 [ ] 包起来 %[%]%

 

本文由3522vip发布于网络数据库,转载请注明出处:SQL-字符串运算符和函数

关键词: 3522vip

上一篇:解决SQL Server本地Windows身份无法登录

下一篇:没有了