Heim  >  Artikel  >  Datenbank  >  Was ist die Methode zur Verwendung von Zeichenfolgen im Zustand in MySQL?

Was ist die Methode zur Verwendung von Zeichenfolgen im Zustand in MySQL?

王林
王林nach vorne
2023-05-31 10:17:031791Durchsuche

Die In-Bedingung in MySQL verwendet Zeichenfolgen

Szenario

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(?)

Methode

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen