MySQL apakšstruktūra, lai atrastu rakstzīmi un atgrieztos pa kreisi

MySQL ietver vairākas iebūvētas virknes manipulācijas funkcijas, kas ir līdzīgas funkcijām, ko nodrošina Web skriptu valodas, piemēram, PHP. Jūs varat izmantot šīs funkcijas gan "SELECT", gan "WHERE" klauzulās MySQL vaicājumā. Varat atrast rakstzīmi virknē un atgriezt visu pa kreisi no šīs rakstzīmes, apvienojot divu dažādu virkņu funkciju izvadi.

Pārbaudiet datus

Nosakiet, kā datu bāzē dati tiek formatēti laukam, kurā plānojat izveidot MySQL vaicājumu. Izmantojot rīku, piemēram, PHPMyAdmin, pārlūkojiet datu bāzes saturu, lai pārbaudītu datu lauku formātu. Piemēram, laukam, kurā ir virkne ciparu, kam seko burts un cits ciparu sērijas, ir tāds formāts kā "009378M38293".

LEFT

Funkcija MySQL "LEFT" atgriež noteiktu rakstzīmju skaitu no virknes sākuma. Piemēram:

LEFT ( item, 10)

atgriež pirmās 10 rakstzīmes no virknes laukā "vienums".

LOCATE

Lai izņemtu visas rakstzīmes pa kreisi no vietas virknē, kurā notiek vēstule, nosakiet pozīciju, kas vērojama, izmantojot MySQL "LOCATE" funkciju. Piemēram, ja lauks "vienums" ir "009378M38293", tad:

LOCATE ("M", item )

atgriež septiņus, kas ir burta "M." pozīcija.

Apvienojot LEFT un LOCATE

Lai atgrieztu visas rakstzīmes, kas atrodas kreisajā pusē, piemēram, "M", jūs varat apvienot "LOCATE" un "LEFT" funkciju rezultātus. Tā kā jūs nevēlaties iekļaut burtu rezultāta kopā, atņemiet to no "LOCATE" rezultāta. Izmantojiet šo vērtību kā rakstzīmju skaitu, ko vēlaties atgriezt no "LEFT" funkcijas. Piemēram, ja laukā "vienums" ir "009378M38293", tad:

LEFT ( item, LOCATE ("M", item ) -1) ir tāds pats kā LEFT ( item, 6), kas atgriež "009378."

Pievienojot WHERE klauzulu

Veidojot MySQL vaicājumu, izmantojot šīs funkcijas, iespējams, vēlēsities iekļaut rezultātus tikai laukiem, kuros ir burts "M", lai jūsu rezultātu kopa nesatur tukšas rindas. Lai to izdarītu, otrajā reizē vaicājumā izmantojiet funkciju "LOCATE" ar "WHERE" klauzulu, lai sniegtu rezultātus tikai tad, kad meklētais burts pastāv; tas ir, kad funkcija "LOCATE" atgriež skaitli, kas ir lielāks par nulli.

Rezultāts

Apvienojiet visu vienā MySQL paziņojumā. Piemēram, šāds paziņojums atgriež rezultātu kopu, kas sastāv no rakstzīmēm laukā "vienumi" pa kreisi no burta "M" katram "vienības" laukam, kurā ir burts "M:"

SELECT LEFT ( item, LOCATE ("M", item ) -1) AS itemleft NO items WHERE LOCATE ("M", item )> 0