Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Falsche MySQL-Ausgabe mit IN-Klausel und Parameter

Parameter funktionieren nicht so; Sie haben keine Ahnung, dass Sie eine durch Kommas getrennte Liste von Werten bereitstellen möchten. Wenn Sie ParamByName('WhatEver').AsString festlegen oder Value , es denkt, Sie meinen eine Zeichenfolge in Anführungszeichen, die alles enthält, was in diesen Parameter gehört. Es tut also genau das, was es zu tun scheint – es übergibt IN ('1, 2, 3') , anstelle des beabsichtigten IN (1, 2, 3) .

Sie müssen entweder zurückgehen, um es selbst zu parsen und eine temporäre Tabelle verwenden, oder das WHERE erstellen -Klausel dynamisch und verkettet sie, bevor die Abfrage ausgeführt wird. (Tatsächlich könnten Sie die Abfrage dynamisch erstellen und einen neuen Parameter für jedes der Elemente in IN erstellen -Klausel, und dann durchlaufen und jedem dieser dynamisch erstellten Parameter Werte zuweisen, aber das wird sehr schnell sehr hässlich.)