Выберите только первую строку символов до CR / LF из текстового столбца - PullRequest
5 голосов
/ 10 февраля 2012

Можно ли выделить или подстроку только первую строку символов в текстовом столбце SQL Server, а затем добавить в качестве первой строки символов в другое текстовое поле в другой таблице?

Ответы [ 4 ]

2 голосов
/ 11 февраля 2012

Если вы используете SQL Server 2005 или более позднюю версию:

В команде LEFT используйте CHARINDEX для CHAR (13), чтобы найти позицию первого символа перевода строки, как в следующем примере:

declare @a table(id int identity(1,1) not null, lines text); --Source
declare @b table(id int identity(1,1) not null, lines text); --Target

insert into @a(lines) values ('1111111'+char(13)+char(10)+'222222')
insert into @b(lines) values ('aaaaa');

update b
set lines=LEFT(cast(a.lines as varchar(max)),CHARINDEX(char(13),cast(a.lines as varchar(max)),1)-1)+cast(b.lines as varchar(max))
from @a a
join @b b on a.id=b.id;

select * from @b;

Я предлагаю также обновить ваши типы данных TEXT на varchar (max), если это возможно.varchar (max) гораздо более устойчив.

1 голос
/ 13 апреля 2013

Вы можете легко назначить это через подзапрос для использования в операторах вставки или обновления.

SELECT  ( CASE WHEN CHARINDEX(CHAR(13), action_Item.Description) = 0
           THEN action_Item.Description
           ELSE SUBSTRING(action_Item.Description, 0,
                          CHARINDEX(CHAR(13), action_Item.Description))
      END ) AS [Description] FROM    action_Item

Где я выбираю первую строку, если поле «Описание» из таблицы с именем «action_Item»

1 голос
/ 10 февраля 2012

Да, введите substring или left до первой новой строки текстового поля.

0 голосов
/ 11 февраля 2012
DECLARE @crlf   char(2);

SET     @crlf = CHAR(13) + CHAR(10);

UPDATE  table1
SET     LEFT(table2.fieldWithCRLF, CHARINDEX(table2.fieldWithCRLF, @crlf, 0) - 1) + table1.fieldToPrepend
FROM    table1
        INNER JOIN table2
            ON  table1.sharedKey = table2.sharedKey
WHERE   CHARINDEX(table2.fieldWithCRLF, @crlf, 0) > 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...