Каждое поле (назовем его field1) имеет связанную с ним строку (назовем его field2).Я хочу разделить field2, чтобы объединенное значение разбилось на несколько строк.Я использую «Узлы» для достижения этой цели, но постоянно получаю сообщение об ошибке.
Существуют и другие способы достижения этой цели, такие как разбиение строки на столбцы и разворот данных, но это громоздко.Этот метод кажется наиболее эффективным, но я не совсем знаю, как это сделать.
with xmll as (
select field1, cast('<r>'+replace(replace(field2,'Case #',''), ',', '</r>
<r>')+'</r>' as xml) as XMLCol
from [database].dbo.table i
where field2 like 'Case%#%'
)
select x.*
, n.r.value('.', 'varchar(max)')
from xmll x
cross apply
XMLCol.nodes(XMLCol) as n(r)
order by field1
Текущее сообщение об ошибке:
Msg 8172, Level 16, State 1, Line 1
The argument 1 of the XML data type method "nodes" must be a string literal.
Каково это сейчас:
Что я хочу: