Я ищу способ конвертировать строки текста в отдельные записи. Может, есть у кого-то идея?
У меня в таблице есть следующая запись:
1 blabla Messe\nJahr\nLand
Третье поле - текстовое. Контент представляет собой текст из трех строк.
Теперь я должен написать select, который дает мне в результате три записи
1 Memo
2 Jahr
3 Land
2 ответа
Я предлагаю использовать курсор, а затем разделить строку с помощью charpos. поскольку я не знал имени вашей таблицы или столбца, я использовал имя таблицы a, имя столбца a.
declare c cursor for
select a
from a
declare @p varchar(max)
open c
fetch next from c into @p;
while @@FETCH_STATUS = 0
begin
while CHARINDEX('\n',@p,0) > 0
begin
select SUBSTRING(@p,0,charindex('\n',@p,0))
set @p = SUBSTRING(@p,charindex('\n',@p,0)+2, LEN(@p)-charindex('\n',@p,0)-1);
end
select @p;
fetch next from c into @p;
end
DEALLOCATE c
Я тестировал это используя
create table a (a varchar(50))
insert into a values ('a\nb\nc')
insert into a values ('d\ne\nf')
Использовать этот..
ALTER FUNCTION [dbo].[GetWordsFromString]
(
@string nvarchar(max)
)
RETURNS
@out TABLE
(
Name nvarchar(200)
)
AS
BEGIN
DECLARE @pos int,
@nextpos int,
@valuelen int
SELECT @pos = 0, @nextpos = 1
WHILE @nextpos > 0
BEGIN
SELECT @nextpos = charindex('\', @string, @pos + 1)
SELECT @valuelen = CASE WHEN @nextpos > 0
THEN @nextpos
ELSE len(@string) + 1
END - @pos - 1
INSERT @out
VALUES (convert(nvarchar, substring(@string, @pos + 1, @valuelen)))
SELECT @pos = @nextpos
END
RETURN
END
Похожие вопросы
Связанные вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.