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

实践是最好的老师!

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

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

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

posted @ 2014-04-28 15:17  cnmarkao  阅读(2258)  评论(1编辑  收藏  举报