Detaillierte Erläuterung des Fehlerproblems der Case-When-Anweisung

Detaillierte Erläuterung des Fehlerproblems der Case-When-Anweisung

Vorwort

In der MySQL-Datenbank verwenden wir manchmal Beurteilungsoperationen wie „if else“. Wie kann man also mit dieser Anforderung in MySQL umgehen?

Syntax der MySQL-Beurteilungsoperation:

Fall ..when-Anweisung

Aber bei der Verwendung bin ich kürzlich auf ein Problem gestoßen. Ich werde im Folgenden nicht viel dazu sagen. Schauen wir uns die ausführliche Einführung an.

Beschreiben Sie das Problem direkt. Ich habe eine Tabelle id_card_message, die ID-Nummern speichert. Die Tabellenstruktur und die Daten sind wie folgt (MySQL 5.7.14):

mysql> wähle * aus ID_Card_Message;

+------+--------------------+

| ID | Ausweisnummer |

+------+--------------------+

| 1 | 342513199411222515 |

| 1 | 342624197812023498 |

| 1 | 310908198910123348 |

+------+--------------------+

Nun möchte ich mir die Geschlechtsinformation anhand der vorletzten Ziffer der Ausweisnummer anzeigen lassen. Ich führe folgende SQL-Anweisung aus und es wird der entsprechende Fehler gemeldet:

mysql> select case substr(Ausweisnummer,17,1)

-> wenn (1,3,5,7,9), dann '男'

-> wenn (0,2,4,6,8), dann '女' und 'Geschlecht',

-> Ausweisnummer

-> von ID-Kartennachricht;

FEHLER 1241 (21000): Operand sollte 1 Spalte(n) enthalten

Der Fehler lautet: „Operand sollte eine Spalte enthalten.“ Der einzige Verdacht besteht hier darin, dass in den Klammern nach der When-Klausel zu viele Werte stehen. Kann also in dieser When-Struktur nur ein Wert nach der When-Klausel stehen? Ich habe die Case-Syntax in Abschnitt 13.6.5.1 der folgenden offiziellen Dokumente überprüft und es scheint, dass es dafür keine Erklärung gibt.

Selbstverständlich können Sie durch eine Änderung des Anweisungsformats dennoch an die benötigten Daten gelangen. wie folgt:

mysql> auswählen

-> Fall

-> wenn substr(id_card_no,17,1) in (1,3,5,7,9), dann '男'

-> wenn substr(id_card_no,17,1) in (0,2,4,6,8) dann '女' endet mit 'sex',

-> Ausweisnummer

-> von ID-Kartennachricht;

+------+--------------------+

| Geschlecht | Ausweisnummer |

+------+--------------------+

| Männlich | 342623199610222515 |

| Männlich | 342624197812023498 |

| Weiblich | 310908198910123348 |

+------+--------------------+

Die aktuelle Idee ist, dass im Format „CASE-Wert, WHEN-Vergleichswert“ der Vergleichswert nach der When-Klausel nur ein einzelner Wert sein kann und nicht mit mehreren Werten verbunden werden kann. Der obige Vergleichswert hat beispielsweise die Werte 1, 3, 5, 7 und 9. In diesem Fall kann nur das obige SQL verwendet werden.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Anweisungen zur Verwendung der MySQL CASE WHEN-Anweisung
  • Tipps zur Verwendung von Case When Then in SQL-Aggregatfunktionen
  • SQL lernen: Verwendung von CASE WHEN THEN ELSE END
  • Mehrere Beispiele für die Verwendung der CASE WHEN-Anweisung von MySQL
  • So verwenden Sie die Case-When-Anweisung in MySQL, um eine Abfrage mit mehreren Bedingungen zu implementieren
  • So verwenden Sie die Case-Why-Syntax in SQL
  • Kurze Analyse zweier Methoden zur Zeilen- und Spaltenkonvertierung von SQL-Anweisungen: case...when und Anwendung der Pivot-Funktion
  • Summe(Fall wenn dann)(um die Anzahl der männlichen und weiblichen Studenten zu ermitteln)
  • MySQL-Fall beim Gruppieren nach Beispiel
  • Beispiel für die Verwendung von CASE WHEN beim Sortieren in MySQL

<<:  Ideen und Codes zur Implementierung der Vuex-Datenpersistenz

>>:  Ein Bugfix für Tomcats automatisches Herunterfahren

Artikel empfehlen

Details zur Verwendung von JS-Array-Methoden some, every und find

Inhaltsverzeichnis 1. einige 2. jedes 3. finden 1...

Docker Swarm von der Bereitstellung bis zum grundlegenden Betrieb

Über Docker Swarm Docker Swarm besteht aus zwei T...

Natives JS zur Implementierung des Spiels 2048

2048 Minispiel, zu Ihrer Information, der spezifi...

Vollständige Schritte zum Mounten einer neuen Datenfestplatte in CentOS7

Vorwort Ich habe gerade einen neuen VPS gekauft. ...

Kreatives „Über uns“-Webseitendesign

Einzigartige „Über“-Seiten Eine gute Möglichkeit, ...

HTML-Auszeichnungssprache - Tabellen-Tag

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

Eine kurze Einführung in MySQL InnoDB ReplicaSet

Inhaltsverzeichnis 01 Einführung in InnoDB Replic...

MySQL-Abfrage redundanter Indizes und ungenutzter Indexoperationen

MySQL 5.7 und höhere Versionen ermöglichen die di...