这是一个示例查询
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不要转义我的子查询结果中出现的单引号?
答案 0 :(得分: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)')