Ошибка преобразования при использовании ',' в STUFF - SQL

У меня есть следующий запрос:

select STUFF((SELECT ',' + rr1._cv_id 
FROM #reportrows rr1 
WHERE rr1._c_id=rr._c_id 
FOR XML PATH('')),1, 1,null)FROM #reportrows rr

В этом запросе _cv_id имеет целочисленный тип. После выполнения этого запроса я вижу ошибку ниже:

Conversion failed when converting the varchar value ',' to data type int.

Любая помощь?!

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
623
3

Ответы 3

Идентификатор не является строкой, поэтому преобразуйте его:

SELECT STUFF( (SELECT ',' + CONVERT(VARCHAR(MAX), rr1._cv_id)
. . .
varchar(MAX), вероятно, здесь излишний (если rr1._cv_id - это int, тогда это должно быть самое большее varchar(11), так как он может обрабатывать все возможные значения).
Larnu 20.10.2018 15:27

похоже, что столбец cv_id имеет числовой тип данных. поэтому вам нужно преобразовать в строку перед объединением с запятой

select STUFF((SELECT ',' + convert(varchar(10), rr1._cv_id)
FROM #reportrows rr1 
WHERE rr1._c_id=rr._c_id 
FOR XML PATH('')),1, 1,null) FROM #reportrows rr

Вам нужно преобразовать rr1._cv_id в строку

select STUFF((SELECT ',' + CAST(rr1._cv_id AS VARCHAR(20))
FROM #reportrows rr1 
WHERE rr1._c_id=rr._c_id 
FOR XML PATH('')),1, 1,null)FROM #reportrows rr

Другие вопросы по теме