bugfix> c# > 投稿

IDのリストを渡し、次のようなselectステートメントを作成するために、dapperにしたいと思います

SELECT Id FROM (VALUES
('2f1a5d4b-008a-496e-b0cf-ba8b53224247'),
('bf63102b-0244-4c9d-89ae-bdd7b41f135c')) AS tenantWithFile(Id)
WHERE   NOT exists( SELECT [Id]
  FROM [dbo].[TenantDetail]AS td
  WHERE td.Id = tenantWithFile.Id
)

データベース内にないリスト内のアイテムを取得します。 TVPのタイプを作成せずにこれを行う簡単な方法はありますか?

回答 2 件
  • Seanが述べたように、TVFなしで区切られた文字列を解析する方法を示す小さなスニペットがあります。 ...クエリに簡単に組み込むことができます。

    Declare @YourList varchar(max)='2f1a5d4b-008a-496e-b0cf-ba8b53224247,bf63102b-0244-4c9d-89ae-bdd7b41f135c'
    Select Id = xmlnode.n.value('(./text())[1]', 'varchar(max)')
     From  (values (cast('<x>' + replace(@YourList,',','</x><x>')+'</x>' as xml))) xmldata(xd)
     Cross Apply xd.nodes('x') xmlnode(n)
    
    

    戻り値

    Id
    2f1a5d4b-008a-496e-b0cf-ba8b53224247
    bf63102b-0244-4c9d-89ae-bdd7b41f135c
    
    

  • Azure SQLまたはSQL Server 2016+を使用している場合は、JSON配列を渡すだけで、OPENJSONを使用して配列をテーブルに変換できます

    DECLARE @j AS NVARCHAR(max) = '["2f1a5d4b-008a-496e-b0cf-ba8b53224247", "bf63102b-0244-4c9d-89ae-bdd7b41f135c"]';
    SELECT [value] FROM OPENJSON(@j)
    
    

あなたの答え