SQL Server - 字符串操作的代码重用

时间:2015-01-29 13:59:08

标签: sql-server string code-reuse

我有一个包含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

1 个答案:

答案 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