Problem:
Du vill sortera resultatet av en SQL-fråga i stigande eller fallande ordning.
Exempel:
Vår databas har en tabell med namnet customer_information
med data i kolumnerna id
, first_name
, last_name
och email_address
. E-postadresserna fylldes i av användarna manuellt, och några angavs med onödiga mellanslag av misstag. Du vill ta bort mellanslagen från e-postadresserna.
id | förnamn | efternamn | email_address |
---|---|---|---|
1 | Calvin | Rios | [email protected] |
2 | Alan | Paterson | al an.paterson@ example.com |
3 | Kurt | Evans | [email protected] |
4 | Alex | Watkins | alex. [email protected] |
Lösning:
Vi kommer att använda REPLACE
fungera. Här är frågan:
SELECT first_name, last_name, REPLACE(email_address, " ", "") AS correct_email_address FROM customer_information;
Här är resultatet av frågan:
förnamn | efternamn | email_address |
---|---|---|
Calvin | Rios | [email protected] |
Alan | Paterson | [email protected] |
Kurt | Evans | [email protected] |
Alex | Watkins | [email protected] |
Diskussion:
Använd REPLACE
funktion om du vill ersätta alla förekomster av en delsträng i en given sträng. I vårt exempel ersätter vi onödiga mellanslag med tomma värden.
Denna funktion tar tre argument. Följande illustrerar syntaxen för funktionen:
REPLACE(string_expression, substring, new_substring)
Det första argumentet är strängen vi skulle vilja modifiera. Det andra argumentet är delsträngen som ska ersättas, och det tredje argumentet är strängen vi vill använda i stället för den ersatta delsträngen. Vi tar bort de oönskade utrymmena i vårt exempel, men funktionen kan användas för många ändamål. Till exempel kanske vi vill rensa och standardisera en kolumn med telefonnummer. Vi kan använda REPLACE
funktion för att göra det.
Om du vill ta bort mer än ett tecken från en given sträng, kapslar du bara REPLACE
fungera en andra gång. Om du till exempel har en sträng med onödiga mellanslag och bindestreck kan du använda följande syntax:
REPLACE(REPLACE(string_expression, " ", ""), "-", "")
Kom ihåg att argumenten för denna funktion i MySQL är skiftlägeskänsliga, så var försiktig med bokstäverna.