Problem:
Du vil gerne sortere resultatet af en SQL-forespørgsel i stigende eller faldende rækkefølge.
Eksempel:
Vores database har en tabel med navnet customer_information med data i kolonnerne id , first_name , last_name og email_address . E-mailadresserne blev udfyldt af brugerne manuelt, og nogle blev indtastet med unødvendige mellemrum ved et uheld. Du vil fjerne mellemrummene fra e-mail-adresserne.
| id | fornavn | efternavn | email_address |
|---|---|---|---|
| 1 | Calvin | Rios | rios.calvin@example.com |
| 2 | Alan | Paterson | al an.paterson@ example.com |
| 3 | Kurt | Evans | kurt.evans@example.com |
| 4 | Alex | Watkins | alex. watkins@example.com |
Løsning:
Vi bruger REPLACE fungere. Her er forespørgslen:
SELECT first_name, last_name, REPLACE(email_address, " ", "") AS correct_email_address FROM customer_information;
Her er resultatet af forespørgslen:
| fornavn | efternavn | email_address |
|---|---|---|
| Calvin | Rios | rios.calvin@example.com |
| Alan | Paterson | alan.paterson@example.com |
| Kurt | Evans | kurt.evans@example.com |
| Alex | Watkins | alex.watkins@example.com |
Diskussion:
Brug REPLACE funktion, hvis du vil erstatte alle forekomster af en understreng i en given streng. I vores eksempel erstatter vi unødvendige mellemrum med tomme værdier.
Denne funktion tager tre argumenter. Det følgende illustrerer funktionens syntaks:
REPLACE(string_expression, substring, new_substring)
Det første argument er den streng, vi gerne vil ændre. Det andet argument er den understreng, der skal erstattes, og det tredje argument er den streng, vi ønsker at bruge i stedet for den erstattede understreng. Vi fjerner de uønskede mellemrum i vores eksempel, men funktionen kan bruges til mange formål. For eksempel vil vi måske rense og standardisere en kolonne med telefonnumre. Vi kan bruge REPLACE funktion til at gøre det.
Hvis du vil fjerne mere end ét tegn fra en given streng, skal du bare indlejre REPLACE fungere en anden gang. For eksempel, hvis du har en streng med unødvendige mellemrum og bindestreger, kan du bruge følgende syntaks:
REPLACE(REPLACE(string_expression, " ", ""), "-", "")
Husk at argumenterne for denne funktion i MySQL er store og små bogstaver, så vær forsigtig med bogstaverne.