【发布时间】:2016-04-10 09:45:03
【问题描述】:
所以我有这段代码可以在双分隔符上精确分割 4 个值,它工作得很好,但我无法解决如何分割 5 个值 这是我的字符串
@string = 'Value1|Value2|Value3|Value4|Value5, OtherVal1|OtherVal2|OtherVal3|OtherVal4|OtherVal5'
这是我用于拆分 4 个值的代码
WITH cte
AS (SELECT Replace(Rtrim(Ltrim(split.a.value('.', 'VARCHAR(100)'))), '|','.') AS split_data
FROM (SELECT Cast ('<M>' + Replace(@string, ',', '</M><M>')
+ '</M>' AS XML) AS Data) AS A
CROSS apply data.nodes ('/M') AS Split(a))
SELECT COLUMN2= Parsename(split_data, 4),
COLUMN3=Parsename(split_data, 3),
COLUMN4= Parsename(split_data, 2),
COLUMN5=Parsename(split_data, 1)
FROM cte
如何将其拆分为 5 个 val?
【问题讨论】:
-
不就是加个 COLUMNX = Parsename(split_data, 5), ?
-
@Turo 没有。 parsename 只能使用 4 个部分。
-
您需要将字符串拆分为行,然后将拆分结果转为列。顺便说一句,这是另一个例子,为什么你不应该在 sql 中使用分隔数据。
-
@ZoharPeled 那我该怎么做呢?感谢您的宝贵时间
-
我很傻,但是您可以编写一个存储函数,根据需要使用分隔符和位置进行拆分
标签: sql string split common-table-expression delimiter