我有一个包含4个不同信息的字段,用短划线分隔(" - ")。 将它与CHARINDEX,RIGHT,LEFT,SUBSTRING分开的代码可能会变得非常尴尬。有更可读的解决方案吗?
示例数据:
AR - RE - Dir. Asuntos Publicos y RSE - Asuntos Publicos
期望的输出:
AR
RE
Dir. Asuntos Publicos y RSE
Asuntos Publicos
到目前为止,代码I已经出现了:
RIGHT(RIGHT(T.TASK_RESUME,LEN(T.TASK_RESUME)-CHARINDEX(' - ',T.TASK_RESUME,1)-2),LEN(RIGHT(T.TASK_RESUME,LEN(T.TASK_RESUME)-CHARINDEX(' - ',T.TASK_RESUME,1)-2))-CHARINDEX(' - ',RIGHT(T.TASK_RESUME,LEN(T.TASK_RESUME)-CHARINDEX(' - ',T.TASK_RESUME,1)-2),1)-2
答案 0 :(得分:0)
我不知道这是不是很好,但也可以这样:
DECLARE @row VARCHAR(200) = 'AR - RE - Dir. Asuntos Publicos y RSE - Asuntos Publicos'
SET @row = '<row>' + REPLACE(@row, ' - ', '</row><row>') + '</row>'
DECLARE @xml XML = CAST(@row AS xml)
SELECT r.v.value('text()[1]','varchar(max)')
FROM @xml.nodes('//row') as r(v)
结果:
AR
RE
Dir. Asuntos Publicos y RSE
Asuntos Publicos