【发布时间】:2013-07-26 05:20:04
【问题描述】:
我有一个名为“PersonNameID”的列名
包含两个值
ABCD-GHJI
ABHK-67891
HJKK-HJJJMH-8990
我只需要提取“-”之后包含数字的“PersonNameID”的第一部分。理想情况下我的输出应该是
ABCD-GHJI
ABHK
HJKK-HJJJMH
但是当我使用以下代码时:
SELECT TOP 100
CONVERT(NVARCHAR(100),
SUBSTRING(PersonNameID, 1,
CASE
WHEN CHARINDEX('-', PersonNameID) > 0
THEN LEN(PersonNameID) -
LEN(REVERSE(SUBSTRING(REVERSE(PersonNameID), 1, CHARINDEX('-', REVERSE(PersonNameID)))))
ELSE LEN(PersonNameID)
END
)
) AS New_PersonNameID
FROM Person
我得到的输出为
ABCD
ABHK
HJKK
对上述代码进行任何修改以获得所需的输出?
【问题讨论】:
标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2008-r2