Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błędne wyjście MySQL z klauzulą ​​IN i parametrem

Parametry nie działają w ten sposób; nie mają pojęcia, że ​​to, co próbujesz podać, jest listą wartości oddzielonych przecinkami. Jeśli ustawisz ParamByName('WhatEver').AsString lub Value , myśli, że masz na myśli ciąg w cudzysłowie, który zawiera wszystko, co należy do tego parametru. Robi dokładnie to, na co wygląda — przekazuje IN ('1, 2, 3') , zamiast zamierzonego IN (1, 2, 3) .

Musisz albo wrócić do samodzielnego analizowania i używania tabeli tymczasowej, albo zbudować WHERE klauzulę dynamicznie i łącząc ją przed wykonaniem zapytania. (Właściwie możesz zbudować zapytanie dynamicznie, tworząc nowy parametr dla każdego elementu w IN klauzuli, a następnie przejdź przez pętlę i przypisz wartości do każdego z tych dynamicznie tworzonych parametrów, ale to bardzo szybko staje się bardzo brzydkie.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z kontroli wersji (Git) w bazie danych MySQL

  2. MySqlConversionException podczas uzyskiwania dostępu do pola DateTime z DataReader

  3. Różnica między typami danych int i int(2) w moim sql

  4. mysql_insert_id problem przy wstawianiu danych współbieżności

  5. Błąd połączenia PDO podczas używania symfony i MAMP