Програмен код:
declare @text nvarchar(max)
declare @splitter varchar(1)
declare @xml xml
set @text = '20,26,8473,98,92,752,87123,73420,8732'
set @splitter = ','
set @xml = cast(('<n>' +
replace(@text, @splitter, '</n><n>') +
'</n>') as xml)
select Y.ID.value('.','int') as ID
from @xml.nodes('/n') as Y(ID)
Обяснение:
Ето и какво представлява самият трик за разделянето на числата от текст. Имаме последователност от числа с разделител между тях в случая е ','. Записваме какъв е разделителя в променливата @splitter. Ключовата част е в разменянето на разделителя с затварящ и отварящ xml таг. Освен това добавяме в двата края на текста съответно отварящ в началото и затварящ в края таг. Така полученият нов текст се преобразува до валиден xml, който съдържа само 1 тип елементи (n) (пример: <n>1</n><n>2</n><n>3</n>). Самото извличането на данни от записания xml се осъществява чрез използване на xml методите nodes() и value().
Получените числа например може да се използват за записване във временна таблица и join със съществуваща в базата таблица за да отделим само стойностите, които ни трябват. Или за някоя друга операция в базата изборът е ваш.
Няма коментари:
Публикуване на коментар