Frage : MYSQL Gewohnheit Sortieren

Ich möchte ein spezifisches sort

I tun habe dieses Liste

TMP123
A1-1
A10-1
A1-3
A20-1
A20-2
A2-1

Is es möglich, MYSQL
A1-1
A1-3
A2-1
A10-1
A20-1
A20-2
TMP123

Format in den Sitzen in dieses immer zu sortieren:
(Putzfrau x 1 - 3) (NUMERISCHES x1 - 3) „-“

Any Ideen?

Antwort : MYSQL Gewohnheit Sortieren

[Fall, wenn instr (t, „-“) > 0 dann instr (t, „-“) sonst Länge (Ende t)+1]
InStr () finden die Position des Schlages, aber, wenn es nicht existiert, uns vortäuschen dort ist einer am Ende der Schnur.
Das Resultat dieses wird als Spalte im Subquery hinzugefügt, um sich ununterbrochen zu beziehen.

[Fall
  als substr (t, 2.1) regexp „[0-9]“ dann verließ (t, 1)
  als substr (t, 3.1) regexp „[0-9]“ dann verließ (t, 2)
  sonst links (t, 3) Ende]
Die dieses Blockprüfungen, zum zu sehen, wenn der 2. Buchstabe ist [0-9], wenn es ist, bringt es den 1. Buchstaben als die Niederlassung zurück.
Wenn es nicht ist, fährt es fort, den 3. Buchstaben zu überprüfen.  Wenn das 3. ist, bilden die 1. zwei die Niederlassung.
Andernfalls bilden die ersten 3 Buchstaben die Niederlassung.

[Fall
  wenn substr (t, 2.1) regexp „[0-9]“ dann geworfen (substr (t, 2, i-2) wie UNTERZEICHNET)
  wenn substr (t, 3.1) regexp „[0-9]“ dann geworfen (substr (t, 3, i-3) wie UNTERZEICHNET)
  wenn substr (t, 4.1) regexp „[0-9]“ dann geworfenes (substr (t, 4, i-4) als UNTERZEICHNET) Ende]
FORM (. wie) ist eine Weise, eine Spalte/einen Ausdruck zu eine Zahl zu machen UNTERZEICHNET. Obwohl Sie Spalten als int herstellen, können Sie nicht zu int werfen. UNTERZEICHNETE Mittel ein int, der nur positiv ist.  Dieses wird angefordert, weil substr (Teil einer Schnur) eine Schnurart ist, die „1“ vor „20“ lexikographisch bestellen würde.
regexp ist eine vorgerücktere Form WIE des Zusammenbringens. Reguläre Ausdrücke ist an sich kompliziert, aber genügt, „regexp „[0-9]“ „Tests zu kennen, ob die Schnur eine Stelle enthält.  Weil wir einen einzelnen Buchstaben prüfen, überprüft er, ob dieser einzelne Buchstabe eine Stelle IST.
Der Test für das 2. Teil ist fast der selbe wie der Test für Niederlassung.
Wenn 2. Stelle ist, fährt es von Position 2, 3rd-> Position 3, 4th->pos 4. ab.
Wissend, wo die Zahnstangenzahl beginnt, nehmen wir da viele Buchstaben wie von dem Subtrahieren der Anfangsposition von der Schlagposition (i-2, i-3, i-4) gefordert.

[Form (substr (t, i+1, Länge (t)) wie UNTERZEICHNET)]
Das letzte Teil wird gefunden, indem man eine Position nach dem Schlag zum Rest der Schnur beginnt.

Diese werden direkt im Auftrag vorbei verwendet, aber Sie können sie im auserwählten oder in der Updateaussage außerdem verwenden.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
vorwählen *
von
(
vorwählen *,
 Fall
  als substr (t, 2.1) regexp „[0-9]“ dann verließ (t, 1)
  als substr (t, 3.1) regexp „[0-9]“ dann verließ (t, 2)
  sonst links (t, 3) Endenniederlassung,
 Fall
  wenn substr (t, 2.1) regexp „[0-9]“ dann geworfen (substr (t, 2, i-2) wie UNTERZEICHNET)
  wenn substr (t, 3.1) regexp „[0-9]“ dann geworfen (substr (t, 3, i-3) wie UNTERZEICHNET)
  wenn substr (t, 4.1) regexp „[0-9]“ dann geworfene (substr (t, 4, i-4) als UNTERZEICHNET) Endenzahnstange,
 (substr (t, i+1, Länge (t)) als UNTERZEICHNET) Niveau werfen
von
(
t, Fall vorwählen wenn instr (t, „-“) > 0 dann instr (t, „-“) sonst Länge (Ende t)+1 als i
vom customsort
) QUADRAT
) SQ2
Auftrag vorbei
Niederlassung, Zahnstange, Niveau
Weitere Lösungen  
 
programming4us programming4us