sql >> データベース >  >> RDS >> Sqlserver

WHERE IN(IDの配列)

    (残念ながら)それはできません。 SQLパラメータは単一の値にしかなり得ないので、次のことを行う必要があります。

    WHERE buildingID IN (@buildingID1, @buildingID2, @buildingID3...)
    

    もちろん、これには、建物IDがいくつあるかを知るか、クエリを動的に構築する必要があります。

    回避策*として、次のことを行いました:

    WHERE buildingID IN (@buildingID)
    
    command.CommandText = command.CommandText.Replace(
      "@buildingID", 
      string.Join(buildingIDs.Select(b => b.ToString()), ",")
    );
    

    これにより、ステートメントのテキストが数字に置き換えられ、次のようになります。

    WHERE buildingID IN (1,2,3,4)
    
    • これはSQLインジェクションの脆弱性に近づいていることに注意してください。ただし、int配列であるため安全です。任意の文字列はではありません 安全ですが、SQLステートメントを整数(または日時、ブール値など)に埋め込む方法はありません。


    1. 結合を使用したSQL更新クエリ

    2. 私のOOW15旅行は完了しました

    3. JSON_STORAGE_SIZE()–MySQLでJSONドキュメントのストレージサイズを検索する

    4. SQLLIKEステートメントで変数を使用する