Methode zum Vergleichen der Größe von Varchar-Typnummern in einer MySQL-Datenbank

Methode zum Vergleichen der Größe von Varchar-Typnummern in einer MySQL-Datenbank

Erstellen einer Testtabelle

-- ----------------------------
-- Tabellenstruktur für check_test
-- ----------------------------
Tabelle löschen, wenn `check_test` vorhanden ist;
Tabelle „check_test“ erstellen (
  `id` int(11) NICHT NULL AUTO_INCREMENT,
  `current_price` varchar(10) NICHT NULL,
  `Preis` varchar(10) NICHT NULL,
  PRIMÄRSCHLÜSSEL (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
 
-- ----------------------------
-- Aufzeichnungen von check_test
-- ----------------------------
INSERT INTO `check_test` VALUES ('1', '12', '14');
INSERT INTO `check_test` VALUES ('2', '22', '33');
INSERT INTO `check_test` VALUES ('3', '15', '8');
INSERT INTO `check_test` VALUES ('4', '9', '7');
INSERT INTO `check_test` VALUES ('5', '12', '12.9'); 

Wir führen das folgende SQL aus:

- Suchen Sie die Datensätze, bei denen current_price kleiner als price ist. Wählen Sie * aus check_test, wobei current_price<price; ist.
Wählen Sie * aus Check_Test, wobei (aktueller Preis + 0) < (Preis + 0);
 
- Suchen Sie die Datensätze, bei denen der aktuelle Preis größer als der Preis ist. Wählen Sie * aus check_test, wobei aktueller Preis > Preis liegt.
Wählen Sie * aus Check_Test, wobei (aktueller Preis + 0) > (Preis + 0);

Die Ergebnisse sind wie folgt:

Wir können sehen, dass in Ergebnis 1 15>8 die Bedingung nicht erfüllt, aber gefunden wird, während in Ergebnis 3 15>8 die Bedingung erfüllt, aber nicht gefunden wird.

Warum ist das so? Denn der Vergleich von Zahlen vom Typ String beginnt bei der ersten Ziffer und vergleicht den entsprechenden Wert im Zeichencode. Wenn sie gleich sind, wird mit dem Vergleich der zweiten Ziffer fortgefahren. Wenn sie nicht gleich sind, wird der größere Wert verglichen . Die den numerischen Zeichen entsprechenden ASCII-Codewerte lauten wie folgt:

Zum Beispiel:

  • Wenn current_price="12", price="14", ist der ASCII-Dezimalwert des ersten Zeichens "1" 49, was einander entspricht. Der ASCII-Dezimalwert des zweiten Zeichens "2" ist 50 und der ASCII-Dezimalwert von "4" ist 52. 50<52, also ist das Ergebnis korrekt.
  • Wenn current_price="15", price="8", dann ist der ASCII-Dezimalwert, der dem ersten Zeichen "1" in current_price entspricht, 49, und der ASCII-Dezimalwert, der dem ersten Zeichen "8" in price entspricht, ist 56, 49<56, also kann es abgefragt werden, aber es ist nicht das erwartete Ergebnis.

Wir können dies mithilfe von Code mit JavaScript überprüfen:

var aktueller_Preis = "12";
var Preis = "14";
console.log(aktueller_Preis < Preis); // wahr
 
var aktueller_Preis = "15";
var Preis = "8";
console.log(aktueller_Preis < Preis); // wahr

Daher sollten Zahlen, die möglicherweise verglichen werden müssen, nicht auf den Typ varchar gesetzt werden. Wenn sie jedoch auf den Typ varchar gesetzt wurden, konvertieren Sie sie zum Vergleichen in den numerischen Typ und fügen Sie dem Feld in SQL 0 hinzu.

Wenn es sich um eine Programmiersprache handelt, muss die Konvertierung über die entsprechende Funktion erfolgen und kann nicht direkt durch Hinzufügen von 0 konvertiert werden, z. B. JavaScript:

var aktueller_Preis = "12";
var Preis = "14";
console.log(parseInt(aktueller_Preis) < parseInt(Preis)); // wahr
 
var aktueller_Preis = "15";
var Preis = "8";
console.log(parseInt(aktueller_Preis) < parseInt(Preis)); // falsch

Hinweis: Der dem Zeichen entsprechende Dezimalwert hängt mit seiner Kodierung zusammen, der ASCII-Code ist jedoch kompatibel.

Referenzlinks:

Vergleich der Zahlen vom Typ String

Vergleich von Zeichenfolgen vom Typ VARCHAR

Vergleichen der Größe von Zahlen vom Typ varchar

Dies ist das Ende dieses Artikels zum Vergleichen der Größe von varchar-Zahlen in einer MySQL-Datenbank. Weitere Informationen zum Vergleichen der Größe von MySQL varchar-Zahlen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Einführung in Mysql Varchar-Größen- und Längenprobleme
  • So ermitteln Sie die Größe von MySQL VARCHAR

<<:  So entfernen Sie das blaue Kästchen, das angezeigt wird, wenn das Bild als Hyperlink verwendet wird

>>:  Über die 4 Zusatzfunktionen von Vuex

Artikel empfehlen

Nginx: Ein Domänenname für den Zugriff auf mehrere Projekte – Methodenbeispiel

Hintergrund Kürzlich stieß ich bei der Bereitstel...

Fehlerbehebung bei der Ursache des 502 Bad Gateway-Fehlers auf dem Nginx-Server

Der Server meldet einen Fehler 502 beim Synchroni...

Der Unterschied zwischen useEffect und useLayoutEffect in React

Inhaltsverzeichnis Voraussetzungen Effekt verwend...

So fragen Sie ab, ob die MySQL-Tabelle gesperrt ist

Spezifische Methode: (Empfohlenes Tutorial: Lern-...

MySQL-Abfragemethode mit mehreren Bedingungen

MySQL-Abfrage mit mehreren Bedingungen Umgebung: ...

30 Minuten, um Ihnen ein umfassendes Verständnis von React Hooks zu vermitteln

Inhaltsverzeichnis Überblick 1. useState 1.1 Drei...

Die „3I“-Standards für erfolgreiche Printwerbung

Für viele inländische Werbetreibende ist die Erste...

Tutorial zur Installation von Odoo14 aus dem Quellcode unter Ubuntu 18.04

Inhaltsverzeichnis Hintergrund dieser Serie Überb...

Centos7-Installation des FFmpeg-Audio-/Video-Tools – einfaches Dokument

ffmpeg ist ein sehr leistungsfähiges Tool zur Aud...