SQLServer_字符串截取相关函数_replace_substring_charindex

SQL Server2017

从左截取 LEFT

参数1:要截取的字符串,参数2:截取字符个数
LEFT ( character_expression , integer_expression )  

从右截取 RIGHT

参数1:要截取的字符串,参数2:截取字符个数
RIGHT ( character_expression , integer_expression )  

获取表达式长度 LEN DATALENGTH

两者有区别:
LEN ( string_expression )  
返回指定字符串表达式的字符数,其中不包含尾随空格。

DATALENGTH ( expression )   
此函数返回用于表示任何表达式的字节数。

字符串去除前后空格 LTRIM RTRIM

LTRIM ( character_expression )  
去除字符串前面的空格

RTRIM ( character_expression )  
去除字符串尾随空格

REPLICATE 复制函数

参数1:字符串或二进制数据类型的表达式
参数2:整数类型的表达式
    select replicate('abc#', 3);
    result:abc#abc#abc#

截取一定长度的字符串 SUBSTRING

参数1:要截取的字符串,参数2:开始截取的下标,参数3:截取的字符长度
SUBSTRING ( expression ,start , length )  

替换函数 STUFF

参数1:字符数据
参数2:指定删除和插入的开始位置
参数3:指定要删除的字符数
参数4:插入替换的内容
STUFF (character_expression, start, length, replaceWith_expression) 
demo:
SELECT STUFF('abcdef', 2, 3, 'ijklmn'); 
result:
aijklmnef  

REPLACE替换函数

   参数1:搜索的字符串
   参数2:要查找的子字符串
   参数3:替换字符串
    REPLACE ( string_expression, string_pattern, string_replacement )
    demo:
    SELECT REPLACE('abcdefghicde','cde','xxx');
    result:
    abxxxfghixxx 
     	区别:STUFF可以指定替换范围,而REPLACE则是全部范围内替换

获取特定字符串下标 CHARINDEX

参数1:要查找的序列, 限制为 8000 个字符
参数2:要搜索的字符串表达式
参数3:默认从0开始 
注意:CHARINDEX函数搜索字符串时,不区分大小写

CHARINDEX (expressionToFind,expressionToSearch [ , start_location ])

PATINDEX 返回查找表达式的下标

PATINDEX ( '%pattern%' , expression )

SELECT PATINDEX('%ter%', 'interesting data'); 
result:3 
          区别:patindex支持通配符,charindex不支持。

逆序函数 REVERSE

REVERSE ( string_expression ) 
返回字符串值的逆序。

**注:**有的函数对数据类型有要求,需要进行类型转换

[Err] 42000 - [SQL Server]参数数据类型 text 对于 replace 函数的参数 1 无效。

-- CAST Syntax:  
CAST ( expression AS data_type [ ( length ) ] )  

-- CONVERT Syntax:  
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )  

demo:

convert(varchar(8000),content)
cast(content as varchar(8000))
Replace(Cast([Content] as nvarchar(4000)),'oldkeyword','newkeyword')

强制转换  CAST
SELECT 9.5 AS Original, CAST(9.5 AS int) AS int,
CAST(9.5 AS decimal(6,4)) AS decimal;

转换  CONVERT
SELECT 9.5 AS Original, CONVERT(int, 9.5) AS int, 
CONVERT(decimal(6,4), 9.5) AS decimal;

result:
Original           int      decimal 
9.5	            9	     9.5000

综合应用:

 Declare @S1 varchar(100)

 Select @S1='jdasgjaadfgas//dkfsdjausdwwWskdfvbbbaskdf' 


--获取 www起始的字符串  (CHARINDEX,PATINDEX不区分大小写)
Select Substring(@S1,CHARINDEX('wWw',@S1),Len(@S1))
Select Substring(@S1,PATINDEX('%wWw%',@S1),Len(@S1))
---
result:wwWskdfvbbbaskdf


--获取 //之后的字符串
Select Substring(@S1,CHARINDEX('//',@S1)+2,Len(@S1))
Select Substring(@S1,PATINDEX('%//%',@S1)+2,Len(@S1))
---
result:dkfsdjausdwwWskdfvbbbaskdf


--获取  aa 和 bb 之前的字符串
select Substring(@S1,CHARINDEX('aa',@S1)+Len('aa'),(CHARINDEX('bb',@S1)-CHARINDEX('aa',@S1)-len('aa')))
result:dfgas//dkfsdjausdwwWskdfv

--获取  das 和 bb 之前的字符串
select Substring(@S1,CHARINDEX('das',@S1)+Len('das'),(CHARINDEX('bb',@S1)-CHARINDEX('das',@S1)-Len('das')))
result:gjaadfgas//dkfsdjausdwwWskdfv


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值