1

这是一个示例查询

select *
from tablename
where tableid in (<sub query>);

这里<sub query>返回 null 或一串模式'id1','id2','id3'

<sub query>是这样的:

select xml_data.value('(/Node/SubNode)[1]', 'varchar(max)'))
from tablename
where tableid = '9944169f-95a6-4570-89d7-b57a3fe1b693'

问题
我的子查询返回正确的数据('id1','id2','id3'),但父查询将完整的结果视为一个字符串,因此总是返回 0 行。

如何告诉 SQL Server 不要转义子查询结果中存在的单引号?

4

1 回答 1

2

目前尚不清楚您的子查询是否适用于与第一个查询相同的表,但这应该向您展示大体方向

declare @x xml = '<Node><SubNode>t1</SubNode><SubNode>t2</SubNode></Node>'

declare @t  table (v varchar(20))
insert @t values ('t1'),('t3')

select table1.*
from
    @t table1
        inner join 
    @x.nodes('/Node/SubNode') t(x)
        on table1.v = t.x.value('.','varchar(100)')
于 2012-09-10T12:33:31.703 回答