sortare natural comanda folosind MySQL de condiții, MySQL

În acest articol, vom descrie diferitele metode de sortare folosind MySQL naturale ORDER BY condiții. Să începem cu o simplă lecție de date.

Să presupunem că avem un tabel de articole. care conține două coloane: ID-ul și item_no. Pentru a crea un tabel elemente pe care le folosim instrucțiunea CREATE TABLE:

Noi folosim o instrucțiune INSERT. pentru a adăuga unele date la elementele de tabel:

Când vom selecta datele și să le sortați prin item_no bază. obținem următorul rezultat:

Acest lucru nu este ceea ce ne-am așteptat. Ne-am dorit să vedem rezultatele după cum urmează:

Aceasta se numește sortare naturală. Din păcate, MySQL nu oferă utilizatorilor cu un script încorporat sau funcția de sortare naturală. ORDER BY declarație sortează rândurile într-un mod liniar, adică, un caracter la un moment dat, începând cu primul caracter.

Pentru a rezolva această problemă, în primul rând, vom împărți coloana item_no în două coloane: prefix și sufix.

coloana prefix va conține o parte item_no digitală. iar coloana sufixul - litera. Acest lucru ne va permite să sortați datele folosind aceste două coloane, cu următoarea interogare:

Solicitarea de date sortate în primul rând pe baza de ordine numerică și apoi în ordine alfabetică, vom obține rezultatul dorit.

Dezavantajul acestei soluții este că înainte de a putea adăuga sau actualizare a datelor, trebuie să item_no împartă în două părți. În plus, avem de a combina cele două într-o singură coloană, atunci când alegem date.

Dacă item_no conține date privind formatul standard, puteți utiliza următoarea interogare pentru a efectua o sortare naturală, fără a modifica structura de masă.

În această interogare, vom converti mai întâi item_no date într-un fracții întregi, fără a utiliza funcția CAST. Și de a folosi, de asemenea, ORDER BY condiție. pentru a sorta rândurile de primul semn numeric, și apoi în ordine alfabetică.

Să ne uităm la un set standard de date cu care deseori avem de a face cu:

Dorim să sortați rezultatul a fost după cum urmează:

Pentru a realiza acest lucru, putem folosi funcția de lungime. Vă rugăm să rețineți că funcția LUNGIME returnează lungimea șirului.

Ideea este de a sorta item_no de date de lungime, și apoi prin valoarea pe coloană cu următoarea interogare:

După cum puteți vedea, datele sunt sortate în mod natural.

Dacă toate soluțiile menționate mai sus nu se aplică în situația dumneavoastră, va trebui să efectueze un fel naturale prin aplicații separate.

Unele limbi naturale suportă funcția de sortare, de exemplu, PHP suportă natsort () funcția de funcție. care sortează matrice folosind algoritmi de sortare naturale.

Traducerea articolului «MySQL natural sortat cu ORDER BY clasuse» a fost pregătit de o echipă de proiect prietenos Web design de la A la Z.

articole similare