Преобразование нескольких строк из одной строки на основе определенного символа

#sql #sql-server

#sql #sql-сервер

Вопрос:

Я пытаюсь преобразовать из одной строки в несколько строк на основе определенного символа Я скопировал скрипт от кого-то, кто работал с его / ее примером, но не работал у меня, как показано ниже

 ;WITH tmp(NOTEINDX, DataItem, TXTFIELD) AS
(
    SELECT
        NOTEINDX,

        LEFT(TXTFIELD, CHARINDEX('#', TXTFIELD   '#') - 1),
        STUFF(TXTFIELD, 1, CHARINDEX('#', TXTFIELD   '#'), '')
    FROM SY03900
    UNION all

    SELECT
        NOTEINDX,

        LEFT(TXTFIELD, CHARINDEX('#', TXTFIELD   '#') - 1),
        STUFF(TXTFIELD, 1, CHARINDEX(',', TXTFIELD   '#'), '')
    FROM tmp
    WHERE
        TXTFIELD > ''
)

SELECT
    NOTEINDX,

    DataItem
FROM tmp
ORDER BY NOTEINDX
  

Однако я получаю сообщение об ошибке ниже

 Msg 402, Level 16, State 1, Line 6
The data types text and varchar are incompatible in the add operator.
  

Я использую SQL Server 2008
Спасибо,
Хатим

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

1. Вам нужно преобразовать текстовое поле в поля varchar(), stuff () не будет работать с текстовыми полями