sql >> Databáze >  >> RDS >> Sqlserver

WHERE IN (pole ID)

To (bohužel) nemůžete. Parametr SQL může být pouze jedna hodnota, takže byste museli:

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

Což samozřejmě vyžaduje, abyste věděli, kolik ID budov existuje, nebo abyste dotaz dynamicky sestavili.

Jako řešení* jsem provedl následující:

WHERE buildingID IN (@buildingID)

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

který nahradí text příkazu čísly a skončí jako:

WHERE buildingID IN (1,2,3,4)
  • Všimněte si, že se to blíží zranitelnosti vkládání SQL, ale protože se jedná o pole int, je to bezpečné. Libovolné řetězce nejsou bezpečné, ale neexistuje způsob, jak vložit příkazy SQL do celého čísla (nebo data a času, boolean atd.).


  1. Importujte soubor CSV do SQL Serveru

  2. jak najít indexy v tabulce v oracle

  3. Vrácení seznamu schémat rozdělení na SQL Server (T-SQL)

  4. Jak nainstalovat MySQL na Windows