動的 SQL クエリを作成しようとしています。
パイプで区切られた Guid の文字列であるフィールドがあります。
このフィールドに Guid を持つすべてのユーザーを検索するクエリを実行したいと考えています。
以下の例では、例としていくつかのダミー GUID を追加しました。2 番目のクエリは、希望どおりに機能します。REPLACE 関数を使用した最初のクエリが機能しません。Replace Select だけを実行すると、2 番目のクエリにあるものが返されるので、同じ結果が返されると予想されます。誰かが私がここで欠けているものを手伝ってくれますか? ありがとう。
select * from CMS_User
WHERE Convert(varchar(36),UserGUID) IN(
select '''' + REPLACE('6415B8CE-8072-4BCD-8E48-9D7178B826B7|AEDD6E3F-61C1-46CF-B2D4-750180036FFF','|',''',''') + ''''
)
select *
from CMS_User
WHERE Convert(varchar(36),UserGUID) IN('6415B8CE-8072-4BCD-8E48-9D7178B826B7','AEDD6E3F-61C1-46CF-B2D4-750180036FFF')
更新: ここでは、私が何をしているのかをさらに示すために、いくつかの SqlFiddle クエリを示します。
すべてを選択すると、2 つのレコードが表示されます http://sqlfiddle.com/#!3/a5e426/5
ハードコーディングされたサブクエリで選択 http://sqlfiddle.com/#!3/a5e426/6
IN サブクエリに置き換えようとしているパイプ区切りの Guid で選択します http://sqlfiddle.com/#!3/a5e426/7
サブクエリを選択して、必要なものを取得していることを示します http://sqlfiddle.com/#!3/a5e426/8