2016-09-22 4 views
2

Ich habe Hunderte von Telefonnummern der Welt. Jedes hat sein Länderpräfix (das Präfix variiert: einige sind 1, 2, 3 oder 4 Stellen lang) + die Telefonnummer. Ich möchte eine MySQL-Abfrage schreiben, die mir den Namen des Landes anzeigt, indem ich das Präfix verwende.Mysql CASE mit mehreren Teilstrings Legths

Beispiel: Wenn ich Sub-String für die ersten 3 Ziffern verwende, funktioniert es gut. Aber wie kann ich die Präfixe zeigen, die 2 oder 4 Stellen lang sind?

SELECT(
CASE (SUBSTR(Number,1,3)) 
WHEN '998' Then 'Uzbekistan ' 
WHEN '996' Then 'Kyrgyzstan ' 
WHEN '995' Then 'Georgia ' 
..... 
.... 
ELSE 'OTHERS' END) AS Country 
+1

Post einige Daten Beispiel für eine bessere Klarheit – Rahul

+0

Es könnte hilfreich sein, wenn Ländercode sein eigenes Feld ist – zedfoxus

Antwort

2

Eine einfache Lösung basiert auf der Tatsache, dass die CASE Anweisung sequentiell ausgewertet wird.

SELECT(
    CASE 
     WHEN SUBSTR(Number,1,2) = '23' Then 'Try For 23 ' 
     WHEN SUBSTR(Number,1,3) = '998' Then 'Uzbekistan ' 
     WHEN SUBSTR(Number,1,3) = '996' Then 'Kyrgyzstan ' 
     WHEN SUBSTR(Number,1,3) = '995' Then 'Georgia ' 
    ..... 
    .... 
    ELSE 'OTHERS' END) AS Country 
+0

Dank @scaisEdge es funktioniert – Ayaz

+0

Ist ihr eine Möglichkeit, dass ich die Präfixe kombinieren können, die 3 Ziffern hat. Etwas wie ---- WANN SUBSTR (Nummer, 1,3) = '998' Dann 'Usbekistan' ODER '996' Dann 'Kirgisistan' ODER '995' Dann 'Georgien' – Ayaz

+0

@Ayaz Keine Verwendung OR wie in dir Kommentar ist nicht möglich .. könnte verschachtelte Groß- und Kleinschreibung verwenden, erscheint aber zu komplex .. (zumindest für mich) – scaisEdge