我有ProductDescription
包含产品名称和 ID 号的字符串数据 ( ),需要提取 ID 号以进行交叉引用...
数据样本:
小部件 (1234) 不同的小部件 (123) 许多小部件 (2x) (4567)
我试图用一个相当混乱的CASE
声明来做到这一点:
CASE
WHEN
ISNUMERIC(
SUBSTRING(
ProductDescription
,CHARINDEX('(',ProductDescription)+1
,CASE
WHEN
CHARINDEX(')',ProductDescription)
-CHARINDEX('(',ProductDescription)-1 > 0
THEN CHARINDEX(')',ProductDescription)
-CHARINDEX('(',ProductDescription)-1
ELSE 0 END
)) = 1
THEN
SUBSTRING(
ProductDescription
,CHARINDEX('(',ProductDescription)+1
,CASE
WHEN
CHARINDEX(')',ProductDescription)
-CHARINDEX('(',ProductDescription)-1 > 0
THEN CHARINDEX(')',ProductDescription)
-CHARINDEX('(',ProductDescription)-1
ELSE 0 END
)
ELSE 0 END
如果产品名称中有括号插入(如“Many Widgets (2x)”示例中),我最终会返回“2x”值,这不是我想要的。
如何仅查找括号中包含的数值并丢弃其他内容?CHARINDEX
有没有一种更简单/更清洁的方法来完成我目前正在尝试的简单工作?
谢谢!