Problém:
Chcete seřadit výsledek SQL dotazu ve vzestupném nebo sestupném pořadí.
Příklad:
Naše databáze obsahuje tabulku s názvem customer_information
s údaji ve sloupcích id
, first_name
, last_name
a email_address
. E-mailové adresy uživatelé vyplnili ručně a do některých byly náhodně zadány zbytečné mezery. Chcete odstranit mezery z e-mailových adres.
id | křestní_jméno | last_name | e-mailová_adresa |
---|---|---|---|
1 | Calvin | Rios | [email protected] |
2 | Alan | Paterson | al an.paterson@ example.com |
3 | Kurt | Evans | [email protected] |
4 | Alex | Watkins | alex. [email protected] |
Řešení:
Použijeme REPLACE
funkce. Zde je dotaz:
SELECT first_name, last_name, REPLACE(email_address, " ", "") AS correct_email_address FROM customer_information;
Zde je výsledek dotazu:
first_name | last_name | e-mailová_adresa |
---|---|---|
Calvin | Rios | [email protected] |
Alan | Paterson | [email protected] |
Kurt | Evans | [email protected] |
Alex | Watkins | [email protected] |
Diskuse:
Použijte REPLACE
Pokud chcete nahradit všechny výskyty podřetězce v daném řetězci. V našem příkladu nahrazujeme zbytečné mezery prázdnými hodnotami.
Tato funkce má tři argumenty. Následující text ilustruje syntaxi funkce:
REPLACE(string_expression, substring, new_substring)
První argument je řetězec, který bychom chtěli upravit. Druhý argument je podřetězec, který má být nahrazen, a třetí argument je řetězec, který chceme použít místo nahrazeného podřetězce. V našem příkladu odstraníme nežádoucí mezery, ale funkci lze použít k mnoha účelům. Můžeme například chtít vyčistit a standardizovat sloupec telefonních čísel. Můžeme použít REPLACE
funkce k tomu.
Pokud chcete z daného řetězce odstranit více než jeden znak, stačí vnořit REPLACE
fungovat podruhé. Pokud máte například řetězec se zbytečnými mezerami a pomlčkami, můžete použít následující syntaxi:
REPLACE(REPLACE(string_expression, " ", ""), "-", "")
Pamatujte, že argumenty této funkce v MySQL rozlišují velká a malá písmena, takže buďte opatrní s písmeny.