首页 > 解决方案 > 根据特定字符从一行转换多行

问题描述

我正在尝试根据特定字符从一行转换为多行我从某人那里复制了一个脚本,该脚本正在使用他/她的示例但不适合我,如下所示

;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 谢谢, Hatim

标签: sqlsql-server

解决方案


推荐阅读