我正在使用产品数据库,尝试从组合ID /颜色代码列中提取产品颜色,其中颜色代码始终是列中最后一个连字符后面的字符串。问题是连字符,产品ID和颜色代码的数量都可能不同。
以下是四个例子:
ABC123-001
BCD45678-0165
S-XYZ999-M2235
A-S-ABC123-001
在这种情况下,颜色代码为001
,0165
,M2235
和001
。将这些选择到自己的专栏中的最佳方法是什么?
答案 0 :(得分:23)
我认为以下是您想要的:
select right(col, charindex('-', reverse(col)) - 1)
如果值中没有连字符,请使用case
:
select (case when col like '%-%'
then right(col, charindex('-', reverse(col)) - 1)
else col
end)
答案 1 :(得分:0)
检查字符串中是否存在连字符是很好的,以避免出现以下错误:
传递给右侧函数的长度参数无效。
SELECT CASE WHEN Col like '%\%' THEN RIGHT(Col,CHARINDEX('\',REVERSE(Col))-1) ELSE '' END AS ColName