Dharmendra-18 Ответов: 3

Создание массива в Sql Server


Как создать массив в sql server 2008. для реализации функции split для хранения значения строкового типа.через функцию foreach.

vivektiwari97701

в языке SQL нет такого понятия, как массив. SQL-это язык, основанный на множествах. лучше тех, свой кус. и напишите свою проблему правильно.

3 Ответов

Рейтинг:
9

_Amy

Смотрите топ-3 ссылки, приведенные Гугл[^]:
Массивы и списки в SQL Server 2008 с использованием табличных параметров[^]
Как объявить массив внутри хранимой процедуры Sql Server?[^]
как создать массив в sql server 2008[^]

Читая эти статьи и обсуждения, я думаю, что вы можете реализовать функцию split для разделения строк..

--Амит


Рейтинг:
25

OriginalGriff

Вы не можете создать массив в SQL server - он не имеет понятия о них как о типе данных.

Возможно, это поможет - он показывает способ передачи списка в качестве строкового параметра:

DECLARE @INSTR as VARCHAR(MAX)
SET @INSTR = '2,3,177,'
DECLARE @SEPERATOR as VARCHAR(1)
DECLARE @SP INT
DECLARE @VALUE VARCHAR(1000)
SET @SEPERATOR = ','
CREATE TABLE #tempTab (id int not null)
WHILE PATINDEX('%' + @SEPERATOR + '%', @INSTR ) <> 0 
BEGIN
   SELECT  @SP = PATINDEX('%' + @SEPERATOR + '%',@INSTR)
   SELECT  @VALUE = LEFT(@INSTR , @SP - 1)
   SELECT  @INSTR = STUFF(@INSTR, 1, @SP, '')
   INSERT INTO #tempTab (id) VALUES (@VALUE)
END
SELECT * FROM myTable WHERE id IN (SELECT id FROM #tempTab)
DROP TABLE #tempTab


Рейтинг:
16

damodara naidu betha

Я думаю, что следующий кодовый блок может вам помочь


DECLARE @ids VARCHAR(100) = '7,3,120';
DECLARE @Xparam XML;
--Convert @ids to XML 
SELECT @Xparam = CAST('<i>' + REPLACE(@ids,',','</i><i>') + '</i>' AS XML)

--Query to compare the id against the ids result set by splitting the XML nodes 
--as a result set
SELECT * FROM table WHERE Id IN (SELECT x.i.value('.','INT') FROM @Xparam.nodes('//i') x(i))