SQL Server中charindex()和reverse()使用

select

case when 电话 like '%/%' then SUBSTRING(电话,1,CHARINDEX('/',电话)-1)

else 电话 end 电话1,

case when 电话 like '%/%/%' then

substring(电话,CHARINDEX('/',电话)+1,charindex('/',电话,CHARINDEX('/',电话)+1)-(CHARINDEX('/',电话)+1))

else '' end 电话2,

case when 电话 like '%/%/%' then

reverse(substring(REVERSE(电话),1,charindex('/',reverse(电话))-1)) else '' end 电话3

from tableA

 

此例只适合类似这样的字符串’123/456/789’,再多的’/’分开,中间字符串很难取。但第一个/左边字符串和最后一个/的右边字符串很容易去,就是利用charindex和reverse。第一个/左边字符串和最后一个/的右边字符串正好相反,可以利用反向思维,先用reverse取反然后再取反就OK了。

下面引用官方的关于charindex()和reverse()内容:

charindex() 在一个表达式中搜索另一个表达式并返回其起始位置(如果找到)。

语法:

CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )
还可以区分大小写搜索
详细参考:http://technet.microsoft.com/zh-cn/library/ms186323.aspx
REVERSE(string_expression)
返回字符串值的逆序
详细参考:http://technet.microsoft.com/zh-cn/library/ms180040.aspx

实践是最好的老师!

有真正的需求,你才会想法设法去实现,去发现。

语法是死的,思维是活的!

重要的是思维,代码只是根据你的思维去组合!

转载于:https://www.cnblogs.com/cnmarkao/p/3696448.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值