MySQL má CONCAT()
funkce, která umožňuje zřetězit dva nebo více řetězců. Funkce ve skutečnosti umožňuje jeden nebo více argumentů, ale její hlavní použití je zřetězení dvou nebo více řetězců.
V MySQL (a v jakémkoli počítačovém programovacím prostředí) je zřetězení řetězců operace spojování řetězců znaků end-to-end.
Zde je příklad:
SELECT CONCAT('Homer', ' ', 'Simpson') AS 'Full Name';
Výsledek:
+---------------+ | Full Name | +---------------+ | Homer Simpson | +---------------+
Všimněte si, že jsem zde ve skutečnosti zřetězil 3 řetězce. Zřetězil jsem křestní jméno, příjmení plus mezeru.
Kdybych nepřidal prostor, vypadalo by to takto:
SELECT CONCAT('Homer', 'Simpson') AS 'Full Name';
Výsledek:
+--------------+ | Full Name | +--------------+ | HomerSimpson | +--------------+
Což může nebo nemusí být výsledek, který hledáte.
Takže pokud to aplikujeme na databázi, pak dotaz může vypadat nějak takto:
SELECT CONCAT(FirstName, ' ', LastName) AS 'Full Name' FROM Individuals WHERE IndividualId = '1';
Výsledek:
+---------------+ | Full Name | +---------------+ | Homer Simpson | +---------------+
Pokud spojujete více než dva řetězce a potřebujete mezeru (nebo jiný oddělovač), zvažte použití CONCAT_WS()
funkce. To vám umožní určit oddělovač, který se má použít mezi jednotlivými řetězci. Oddělovač stačí zadat pouze jednou a použije se pro každý řetězec, který je zřetězen, takže nemusíte znovu psát mezi jednotlivými řetězci.
Argumenty NULL
CONCAT()
funkce vrací NULL
pokud je nějaký argument NULL
.
Příklad:
SELECT CONCAT('Homer', NULL, 'Simpson') AS 'Full Name';
Výsledek:
+-----------+ | Full Name | +-----------+ | NULL | +-----------+
Binární řetězce vs nebinární řetězce
Dokumentace MySQL uvádí:
Pokud jsou všechny argumenty nebinární řetězce, výsledkem je nebinární řetězec. Pokud argumenty obsahují libovolné binární řetězce, výsledkem je binární řetězec. Číselný argument je převeden na ekvivalentní formu nebinárního řetězce.