问题描述
如果使用sql Server:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
您可以添加CASE
语句或NULLIF()
在连字符不总是出现的情况下使用:
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
或者:
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
如果使用MysqL,请更改CHARINDEX()
为LOCATE()
。我相信它是Oracle,INstr()
并且前两个参数已切换,首先是您要搜索的字符串,然后是您要搜索的字符串。
解决方法
我需要提取连字符右边的所有字符作为select语句的一部分。选择中将有其他列。在下面的查询中,从第二列中选择了右边的三个字符。我如何提取定界符右边的不定数量的字符(在我的情况下为连字符)?我可以使用正确的功能吗?我需要使用其他功能吗?
Select column1,right(column2,3) as extracted,column3
From myTable
我正在使用SQL Server 2008。