我需要提取连字符右侧的所有字符作为select语句的一部分.选择中将有其他列.在下面的查询中,从第二列中选择了右边的三个字符.如何在分隔符的右边提取无限数量的字符 – 在我的例子中是连字符?我可以使用正确的功能吗?我需要使用其他功能吗?
Select column1,right(column2,3) as extracted,column3 From myTable
我正在使用sql Server 2008.
解决方法
这个问题有一个数据库特定的答案.
如果使用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,REVERSE(column2))-1) END as extracted,column3 FROM myTable
要么:
SELECT column1,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted,column3 FROM myTable
如果使用MysqL,只需将CHARINDEX()更改为LOCATE().我相信Oracle它的INSTR()和前两个参数被切换,首先它是你正在搜索的字符串,然后是你正在搜索的字符串.