Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешен изход на MySQL с IN клауза и параметър

Параметрите не работят така; те нямат представа, че това, което се опитвате да предоставите, е разделен със запетая списък със стойности. Ако зададете ParamByName('WhatEver').AsString или Value , смята, че имате предвид низ в кавички, който съдържа всичко, което принадлежи на този параметър. Така че прави точно това, което изглежда - предава IN ('1, 2, 3') , вместо предвидения IN (1, 2, 3) .

Ще трябва или да се върнете, за да го анализирате сами и да използвате временна таблица, или да създадете WHERE клауза динамично и го конкатенира преди да изпълни заявката. (Всъщност бихте могли да изградите заявката динамично, създавайки нов параметър за всеки от елементите в IN клауза и след това прегледайте и присвоете стойности на всеки от тези динамично създадени параметри, но това става много грозно много бързо.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да свържа MySQL с Java?

  2. mysql намери най-малкия + уникален идентификатор

  3. Обновяването на MySQL отнема (твърде) много време

  4. Как да накарам Django да работи с MySQL в XAMPP?

  5. изтичане на памет в php скрипт