我需要从用逗号分隔的字符串中提取代码。
我已经找到了如何提取第一个代码的方法,但是我一直在努力寻找如何提取后续代码的方法。
示例字符串:
~R10.4,T85.8,Y83.8,I10X,I25.9,E10.9,Z95.5,Z93.2,Z88.0
查询:
select code_string, substring(code_string, 0, charindex(',',code_string)) as first
FROM TABLE
返回:
~R10.4
我现在需要提取后续代码
~R10.4
T85.8
Y83.8
I10X
etc.
任何帮助将不胜感激
如果可能的话,我宁愿不必创建一个函数
答案 0 :(得分:1)
我猜您正在使用SQL Server,以便可以使用
SELECT value FROM
STRING_SPLIT('~R10.4,T85.8,Y83.8,I10X,I25.9,E10.9,Z95.5,Z93.2,Z88.0', ',');
答案 1 :(得分:0)
我想分享我的解决方案
;WITH Split_Field (CODE_STRING, xmlname)
AS
(
SELECT
CODE_STRING,
CONVERT(XML,'<Names><name>'
+ REPLACE(CODE_STRING,',', '</name><name>') + '</name></Names>') AS xmlname
FROM
(
Select cast('~I20.9,I10X,E78.0,H81.0,K90.0,M81.9,M19.9,Z86.7' as nvarchar(MAX))
/*replace with your code field*/ as CODE_STRING
--from table
) as A
)
SELECT
CODE_STRING,
xmlname.value('/Names[1]/name[1]','varchar(100)') AS Col1,
xmlname.value('/Names[1]/name[2]','varchar(100)') AS Col2,
xmlname.value('/Names[1]/name[3]','varchar(100)') AS Col3,
xmlname.value('/Names[1]/name[4]','varchar(100)') AS col4,
xmlname.value('/Names[1]/name[5]','varchar(100)') AS col5
FROM Split_Field