Wenn SQL als Bedingung verwendet, wird ein Parameter verwendet, um die Abfragebedingung zu erfüllen, und die direkte Übergabe der Zeichenfolge kann die Bedingung nicht erfüllen.
select id,name from user where id in(?)
Verwenden Sie die Funktion FIND_IN_SET(str,strlist)
select id,name from user where FIND_IN_SET(id,#{strlist})
str
: Bedingungsfeldstr
: 条件字段
strlist
strlist
: übereinstimmender Wertesatz
select id,name from user where FIND_IN_SET(id,'111,22,333')Die MySQL-Abfrage im Bedingungsparameter ist eine Zeichenfolge mit Komma. Das Abfrageergebnis ist falsch ;
Das korrekte Abfrageergebnis der SQL-Abfrage sollte sein:Nicht empfohlen, Kunden fördern, Kunden fördern
Das tatsächliche Ergebnis ist:Nicht empfohlen
Grund:
Wenn in MySQL ist eine Zeichenfolge. Wenn dies der Fall ist, wird sie automatisch in den Typ int konvertiert. Die folgende Methode wird intern verwendet: SELECT
(
SELECT
GROUP_CONCAT(content)
FROM
account_limit_user ur
WHERE
ur.id IN (T1.limit_user)
GROUP BY
ur.id
) AS limit_user
FROM
account T1
WHERE
1 = 1
Da das Komma fälschlicherweise als Semikolon geschrieben wird, wird „4,3“ zu „4;“, also Ergebnis der obigen Abfrage SQL enthält nur das erste.
Lösung
CAST('4,3' AS INT)
Korrektes SQL
FIND_IN_SET('查询的值(如:1)', '使用逗号隔开的字符串集合,如:('1,2,3')')
Das obige ist der detaillierte Inhalt vonWas ist die Methode zur Verwendung von Zeichenfolgen im Zustand in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!