如何从基于特殊字符的行中提取值

时间:2018-08-26 20:29:40

标签: sql sql-server tsql

请帮助实现以下输出

列值:-

Document Name for File: Updated from Q1 - answer to Q1 - answer (Abhi up)); Version: Updated from V5.2 to V5.7;Updated from No to Yes

必填输出:-

Document Name for File: Updated from Q1 - answer to Q1 - answer (Abhi up))
Version: Updated from V5.2 to V5.7
Updated from No to Yes

1 个答案:

答案 0 :(得分:0)

如果使用SQL Server 2016或更高版本,则可以使用string_split()

SELECT ltrim(rtrim(ss.value))
       FROM elbat t
            CROSS APPLY string_split(t.nmuloc, ';') ss;

对于2008或更高版本,您可以通过转换为nodes()来使用value()xml

SELECT ltrim(rtrim(nodes.node.value('.', 'nvarchar(MAX)')))
       FROM (SELECT convert(xml, concat('<x>', replace(t.nmuloc, ';', '</x><x>'), '</x>')) xml
                    FROM elbat t) x
            CROSS APPLY xml.nodes('/x') nodes(node);

两种方式都使用rtrim()ltrim()删除前导或尾随空格。

db<>fiddle