尝试连接列行值时将数据类型 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_number
是 bigint
,您需要将其 CONVERT
或 CAST
转换为文本类型:
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 服务器将为您处理隐式 bigint
到 varchar
的转换,因为使用二元运算符不会引起歧义。
我使用以下查询将列的行值连接成单个值。
SELECT
SUBSTRING(
(
SELECT
',' + id_number AS 'data()'
FROM
users FOR XML PATH('')
),
2,
9999
) AS id_numbers
id_number 列的类型为 varchar。我试图转换为文本,但仍然出现错误。
id_number
是 bigint
,您需要将其 CONVERT
或 CAST
转换为文本类型:
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 服务器将为您处理隐式 bigint
到 varchar
的转换,因为使用二元运算符不会引起歧义。