1

これはサンプルクエリです

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

<sub query>hereは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')を返しますが、親クエリは完全な結果を1つの単一の文字列と見なすため、常に0行を返します。

サブクエリの結果に存在する一重引用符をエスケープしないようにSQLServerに指示するにはどうすればよいですか?

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 に答える