【发布时间】:2010-07-23 15:03:20
【问题描述】:
下面的 SQL 代码给了我一个名义上的错误。
WHERE
(SELECT Tokens FROM StringSplitter(@DocumentValue, '|', 1)) IN
(SELECT Tokens FROM StringSplitter(@sortValue, '|', 1))
其中@DocumentValue 和@sortValue 都是由分隔符(在本例中为“|”)分隔的串联字符串。
StringSplitter 函数返回一个包含每个单独字符串的表。例如Fox|Brown|SQL 将返回一个包含三个记录的表:Fox、Brown 和 SQL。
我想要发生的是比较两组字符串,如果 @DocumentValue 中的任何单个字符串与来自的任何单个字符串匹配,则将它们插入另一个表(因此是 WHERE) @sortValue。
此实现存在缺陷。如果 @DocumentValue 和 @sortValue 包含多个匹配字符串,则查询将失败,并出现给定错误。
也就是说,考虑到我不关心 哪个 值匹配,我该如何解决这个错误,只要我知道 至少 是否匹配?
Sql Server 2008
【问题讨论】:
-
好点。 T-SQL,SQL Server 2008。我会去编辑它。
标签: sql tsql sql-server-2008 subquery expression