Програмен код:
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 със съществуваща в базата таблица за да отделим само стойностите, които ни трябват. Или за някоя друга операция в базата изборът е ваш.
Няма коментари:
Публикуване на коментар