У меня есть код ниже. Я использовал что-то очень похожее на это раньше, чтобы разрешить ввод нескольких значений в строку с разделителями-запятыми.TSQL несколько значений в where с использованием узлов XML
По какой-то причине запрос только принимает самое первое значение и не продолжает считывать значения. @Tables
будет что-то вроде "Table1, table2, table3"
Может ли кто-нибудь увидеть мою ошибку? Он работает с числами, если я делаю '1, 2, 3, 4'
в базе данных, которая работает, но она не работает со строками.
DECLARE @TableXML AS XML
SET @TableXML = cast(('<a>'+replace(@Tables,',' ,'</a><a>')
+'</a>') AS XML);
SELECT
*
FROM CABDetail
WHERE CABDetail.BudgetName in (SELECT
a.value('.', 'varchar(max)')
FROM @TableXML.nodes('a') AS FN(a)
)
ORDER BY CABDetail.account
Должно работать, если 'CABDetail.BudgetName' содержит одно из значений Table1, table2, table3. Можете ли вы создать образец таблицы с данными, которые можно использовать для воспроизведения проблемы? – har07