如何告诉T-SQL查询不要转义给定的字符串/查询结果

时间:2012-09-10 11:22:19

标签: sql sql-server sql-server-2008-r2

这是一个示例查询

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不要转义我的子查询结果中出现的单引号?

1 个答案:

答案 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)')