Sortare mysql de unele caracteristici rar folosite,-vr on-line - e-mail gratuit

Sortare mysql de unele caracteristici rar folosite,-vr on-line - e-mail gratuit
Despre sortarea datelor folosind interogări SQL. Cred că știu toți dezvoltatorii web. Este suficient să arate într-o ordine de interogare BY cu parametrii necesari, și veți obține rezultatul dorit. Parametrii setați prea simplu. Doar coloane separate prin virgula pentru care doriți să le sortați și specificați direcția (ascendentă (ASC) sau descendent (DESC)).

Ie interogare că sortarea ar putea arăta după cum urmează.
SELECT * FROM articole ORDER BY ASC a_title. a_date DESC

În acest caz, înregistrarea articolelor din tabel vor fi sortate în ordine crescătoare de câmpul a_title, cât și pentru înregistrările cu valori identice în domeniul a_title - a_date pe teren în ordine descrescătoare. Este în această formă sunt folosite pentru a sorta cele mai multe cazuri. Dar există situații în care trebuie să utilizați reguli mai complexe.

Sortarea în funcție de tipul de date

Imaginați-vă că aveți două mese. Prima conține câteva înregistrări (articole, știri, produse, etc.), iar al doilea - metadatele pentru aceste înregistrări. Metadatele pot include orice tip de informații, de exemplu, știri de rating sau de culoare mărfurilor. În acest caz, tabelul va avea aproximativ următoarea structură.

Sortare mysql de unele caracteristici rar folosite,-vr on-line - e-mail gratuit

Această sortare poate face folosind următoarea interogare


Această interogare afișează toate înregistrările din tabelul de articole care au creat o culoare meta-câmp. Evident, tipul câmpului trebuie să fie de text, deoarece m_value Nu se cunoaște dinainte care vor fi stocate în metadate. În acest caz, datele numerice sunt sortate nu este corect. Faptul că ORDER BY compară valorile în ceea ce privește câmpul de tip și, de exemplu, prin sortarea în ascendent, veți primi următorul set de valori: „1“, „10“, „2“, „3“, etc.

Ie în efectuarea o astfel de cerere trebuie să precizeze ce m_value de câmp este considerat numeric. Acest lucru se face după cum urmează.


Operația inversă (câmp numeric sortate în conformitate cu regulile de text) este scris un pic complicat.


Funcția stânga returnează un șir de caractere care conține un prim N caractere din șirul specificat de primul parametru. Numărul de simboluri (N) este dată de al doilea parametru. În acest caz, sunt selectate primele 20 de caractere (suficient pentru a transforma numărul întreg de 8 octeți consecutiv). Ie motor MySQL efectuează sortarea pe rând obținute din valori de câmp numerice.

Vreau să avertizez că, în ciuda faptului că aceste metode pot fi la îndemână, în unele situații, utilizarea lor duce la o scădere a vitezei de execuție de interogări SQL. Prin urmare, nu ar trebui să le abuzeze. Pe de altă parte, sortarea folosind PHP (sau orice altă limbă) va lua ceva timp.

Sortarea textului sensibil

Pentru câmpuri de text, sortarea nu este sensibil la majuscule. În cele mai multe cazuri, acest lucru este corect, deoarece caractere în majuscule tabelul „A“ vine după o literă mică „i“. Ie sortate cu registrul de linie va fi amplasat în ordinea următoare.

1. "Query Language"
2. „limbaj de programare“
3. "Query Language"

Dar dacă încă nevoie pentru a efectua un fel este sensibil la caz, pur și simplu adăugați operatorul BINARY în fața numelui câmpului.


Sortarea în fragment linie


Sortarea înregistrărilor dintr-o listă dată de valori

Imaginați-vă că aveți înregistrări care sunt într-un fel legate de perioada anului. Și vă păstrați aceste informații într-una din coloanele din tabel. Este clar că, folosind un standard de opțiune (în ordine alfabetică) de sortare, pentru a aranja ordinea anotimpurilor, „de primăvară“, „de vară“, „toamna“, „de iarnă“, nu va funcționa. Desigur, aveți posibilitatea să atribuiți fiecare sezon codul, dar nu există o altă soluție alternativă - de a utiliza funcția de câmp.


Această funcție caută valoarea specificată în primul parametru, printre valorile enumerate în restul parametrilor, și pentru a reveni numărul de serie. Când executați interogarea în primele funcții parametrului de câmp vor fi transferate la valoarea a_season câmp și, prin urmare, intrările sunt sortate în ordinea dată de noi.

Linii de sortare de-a lungul lungimii lor

Această caracteristică este foarte rar folosit, deoarece Lungimea liniei de obicei sens nu poartă sarcina. Cu toate acestea, în unele cazuri, poate fi util.


După cum puteți vedea, „Focus“ este de a utiliza funcția CHAR_LENGTH care determină numărul de caractere pe linie.

Cred că, în căutarea la ultimele câteva rețete, îți dai seama că, în acest fel puteți utiliza aproape toate funcțiile MySQL. Mi-ar fi interesat dacă distribuiți exemple din practica lor