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
实践是最好的老师!
有真正的需求,你才会想法设法去实现,去发现。
语法是死的,思维是活的!
重要的是思维,代码只是根据你的思维去组合!