尝试连接列行值时将数据类型 varchar 转换为 bigint 时出错

Error converting data type varchar to bigint when trying to concatenate column row values

我使用以下查询将列的行值连接成单个值。

SELECT
    SUBSTRING(
        ( 
            SELECT
                ',' + id_number AS 'data()'
            FROM
                users FOR XML PATH('')
        ),
        2,
        9999
    ) AS id_numbers

id_number 列的类型为 varchar。我试图转换为文本,但仍然出现错误。

id_numberbigint,您需要将其 CONVERTCAST 转换为文本类型:

SELECT
    SUBSTRING(
        ( 
            SELECT
                ',' + CONVERT( varchar(20), id_number ) AS 'data()'
            FROM
                users FOR XML PATH('')
        ),
        2,
        9999
    ) AS id_numbers

If you're using SQL Server 2017 or later you can use STRING_AGG(MS SQL 服务器相当于 MySQL 的 GROUP_CONCAT):

SELECT
    STRING_AGG( id_number, ', ' )

(SQL 服务器将为您处理隐式 bigintvarchar 的转换,因为使用二元运算符不会引起歧义。