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

Beispielcode für die Verwendung von @media in CSS3 zur Anpassung einer Webseite

Heutzutage wird die Bildschirmauflösung von Compu...

Beispielcode für Nginx zur Erreichung dynamischer und statischer Trennung

1. Einfache Konfiguration der dynamischen und sta...

Umfassendes Verständnis der Node-Ereignisschleife

Inhaltsverzeichnis Knoten-Ereignisschleife Ereign...

Vue implementiert die Funktionen Vergrößern, Verkleinern und Ziehen

In diesem Artikelbeispiel wird der spezifische Co...

So führen Sie das React-Projekt auf dem offiziellen WeChat-Konto aus

Inhaltsverzeichnis 1. Verwenden Sie das „A“-Tag, ...

Detaillierte Erklärung der KeepAlive-Verwendung in der Vue-Frontend-Entwicklung

Inhaltsverzeichnis Vorwort Keep-Avlive-Hook-Funkt...

Ursachen und Lösungen für den MySQL-Fehler „zu viele Verbindungen“

Inhaltsverzeichnis Kurzzusammenfassung Heute Mitt...

So passen Sie CSS an den Vollbildmodus des iPhone an

1. Medienabfragemethode /*iPhone X-Anpassung*/ @m...

Vue implementiert einen einfachen Bildwechseleffekt

In diesem Artikelbeispiel wird der spezifische Co...

Die CSS-Priorität der Webseite wird für Sie ausführlich erklärt

Bevor wir über die CSS-Priorität sprechen, müssen...