Der Inhalt dieses Artikels befasst sich mit dem Vergleich von Zeichenfolgen und Zahlen in MySQL (mit Beispielen). Ich hoffe, dass er für Freunde hilfreich ist.
In Projekten verwenden wir oft die Fuzzy-Suche, aber wenn wir versehentlich Zeichenfolgentypen und numerische Typen vergleichen, entsprechen die Suchergebnisse manchmal nicht unseren Erwartungen. Beispiel:
Die XML-Anweisung in mybatis lautet wie folgt:
<if test="criteria != null and criteria.length()>0"> AND (name like concat("%",#{criteria},"%") OR id = #{criteria}) </if>
Bei der Suche geben wir „884 test“ ein und das Ergebnis enthält den Datensatz mit der ID=884, aber den Namen stimmt nicht überein. Dies ist die Gefahr des MySQL-String- und Zahlenvergleichs: Während des Vergleichs wird der String-Typ in einen Integer-Typ konvertiert, beginnend mit dem ersten Buchstaben und endend, wenn ein nicht-numerischer Typ angetroffen wird.
Schauen wir uns ein paar Beispiele an:
SELECT "abc"=1; 结果:0
SELECT "1abc"=1; 结果:1
SELECT "abc"=0; 结果:1
SELECT "a2bc"=2; 结果:0
Wie löst man dieses Problem? Tatsächlich müssen Sie nur eine Typkonvertierung wie folgt durchführen:
SELECT "2bc"=cast(2 as CHAR); 结果:0
Das obige ist der detaillierte Inhalt vonVergleich von Strings und Zahlen in MySQL (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!