Возможно, я не вижу леса за деревьями, но я застрял, поэтому вот вопрос:
Как я могу импортировать / вставить список разделенные запятыми значения varchar в таблицу? Я не имею в виду что-то вроде этого:
'12345678,87654321,11223344'
но это: '12345678', '87654321', '11223344'
У меня есть Split
-функция, но в данном случае она кажется бесполезной, не так ли?
Вот простой пример (имитация SQL), чтобы показать, что я имею в виду:
Create Table #IMEIS(
imei varchar(15)
)
INTO INTO #IMEIS(imei)
SELECT * FROM ('012251000362843', '012251001084784', '012251001168744', '012273007269862', '012291000080227', '012291000383084', '012291000448515')
SELECT * from #IMEIS
DROP TABLE #IMEIS;
Заранее благодарю.
Примерно так должно работать:
INSERT INTO #IMEIS (imei) VALUES ('val1'), ('val2'), ...
ОБНОВЛЕНИЕ:
Очевидно, этот синтаксис доступен только начиная с SQL Server 2008.
Sql Server не имеет (насколько мне известно) встроенной функции Split. Функция разделения в целом на всех платформах будет иметь разделенное запятыми строковое значение, которое будет разбито на отдельные строки. На сервере sql основная цель или необходимая функция Split - преобразовать строковое значение, разделенное запятыми (‘abc, cde, fgh’), во временную таблицу, в которой каждая строка является строкой.
Приведенная ниже функция Split представляет собой табличную функцию, которая поможет нам разбить строку через запятую (или любое другое значение разделителя) на отдельную строку.
CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
выберите топ 10 * из dbo.split («Ченнаи, Бангалор, Мумбаи», «,»)
полный список можно найти по ссылке http: / /www.logiclabz.com/sql-server/split-function-in-sql-server-to-break-comma-separated-strings-into-table.aspx