【发布时间】:2016-05-09 01:44:19
【问题描述】:
我有下面的代码。我之前使用过与此非常相似的东西来允许在逗号分隔的字符串中输入多个值。
由于某种原因,尽管查询只获取第一个值并且不会继续读取值。 @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 之一应该可以工作。您能否使用可用于重现问题的数据创建示例表?
标签: sql sql-server xml tsql nodes