Problém:
Chcete spojit řetězce ze dvou sloupců tabulky do jednoho.
Příklad:
Naše databáze obsahuje tabulku s názvem student
s údaji v následujících sloupcích:id
, first_name
a last_name
.
id | first_name | last_name |
---|---|---|
1 | Lora | Smith |
2 | Emil | Hnědá |
3 | Alex | Jackson |
4 | Martin | Davis |
Připojte křestní jméno k příjmení studenta v jednom řetězci. Mezi jednotlivými názvy použijte mezeru.
Řešení:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
Tento dotaz vrací záznamy v jednom sloupci s názvem full_name
:
celé_jméno |
---|
Lora Smith |
Emil Brown |
Alex Jackson |
Martin Davis |
Diskuse:
Chcete-li připojit řetězec k jinému a vrátit jeden výsledek, použijte || operátor. To sečte dva řetězce zleva a zprava dohromady a vrátí jeden výsledek. Pokud použijete název sloupce, neuzavírejte jej do uvozovek. Při použití řetězcové hodnoty jako mezery nebo textu ji však uzavřete do uvozovek.
V našem příkladu jsme do first_name
přidali mezeru a poté sloupec last_name
. Tento nový sloupec se nazývá full_name
.
Můžete také použít speciální funkci:CONCAT. Ke spojení jako argumentů je zapotřebí seznam řetězců nebo názvů sloupců:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
Výsledky jsou totožné.
Funkce CONCAT() je však lepší pro načítání dat ze sloupce s hodnotami NULL. Proč? Protože když je v hodnotách, které mají být spojeny, zahrnuta hodnota NULL, operátor jako výsledek vrátí hodnotu NULL. V případě CONCAT() se NULL nezobrazí.
Podívejte se na výsledek || operátor, pokud Emill nemá zaznamenané příjmení:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
celé_jméno |
---|
Lora Smith |
NULL |
Alex Jackson |
Martin Davis |
Podívejte se na funkci CONCAT pro stejná data:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
celé_jméno |
---|
Lora Smith |
Emil |
Alex Jackson |
Martin Davis |