小编典典

SQL Server-选择最后一个连字符后的所有字符的子字符串

sql

我正在使用产品数据库,试图从ID
/颜色代码组合列中提取产品颜色,其中颜色代码始终是该列中最后一个连字符之后的字符串。问题在于连字符,产品ID和颜色代码的数量都可以不同。

这是四个示例:

ABC123-001
BCD45678-0165
S-XYZ999-M2235
A-S-ABC123-001

在这种情况下,颜色代码是0010165M2235,和001。将它们选择到自己的列中的最佳方法是什么?


阅读 162

收藏
2021-05-23

共1个答案

小编典典

我认为以下是您想要的:

select right(col, charindex('-', reverse(col)) - 1)

如果您的值中可能没有连字符,请使用case

select (case when col like '%-%'
             then right(col, charindex('-', reverse(col)) - 1)
             else col
        end)
2021-05-23