Как выбрать многострочный текст как разные однострочные тексты?

#sql #sql-server #database #sql-server-2008 #sql-server-2005

#sql #sql-сервер #База данных #sql-server-2008 #sql-server-2005

Вопрос:

UPDATE TBL SET Col1='multi rnline rntext'

Я использую приведенный выше запрос для установки col1 значения в многострочное значение.

Я хочу выбрать col1 как 3 строки.

Я хочу вывод для

Select col1 from tbl

Нравится

COL1


несколько

строка

текст

Комментарии:

1. вы хотите обновить или вставить

2. Я выполняю как вставку, так и обновление, и мой запрос заключается в том, как выбрать его в разных строках

3. Если это insert, это возможно, и я могу дать u запрос для этого, для обновления, поскольку, насколько мне известно, это невозможно для существующих строк, поскольку для этого необходимо вставить дополнительные две строки.

Ответ №1:

Чтобы разделить эту строку на элементы, мы используем метод nodes() типа данных XML. Чтобы использовать его, мы должны преобразовать эту строку в формат XML. Просто замените 'rn' на '</X><X>' :

 WITH T AS
(
  SELECT ID,
  CAST('<X>' REPLACE(col1,'rn','</X><X>') '</X>' as XML) as xmldata 
  FROM TBL
  )

SELECT T.ID,
       a.c.value('data(.)', 'VARCHAR(100)') as col1 
FROM   T
CROSS APPLY xmldata.nodes('X') as a(c) 
 

SQLFiddle demo

Ответ №2:

Попробуйте это для вставки

 insert into table
Select a.na 
from table 
cross apply(Select 'multi' na union Select 'Line' union Select 'Text')a