Probleem:
U wilt strings van twee kolommen van een tabel samenvoegen tot één.
Voorbeeld:
Onze database heeft een tabel met de naam student
met gegevens in de volgende kolommen:id
, first_name
en last_name
.
id | voornaam | achternaam |
---|---|---|
1 | Lora | Smith |
2 | Emil | Bruin |
3 | Alex | Jackson |
4 | Martin | Davis |
Laten we de voornaam in één string toevoegen aan de achternaam van de student. Gebruik een spatie tussen elke naam.
Oplossing:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
Deze query retourneert records in één kolom met de naam full_name
:
volledige_naam |
---|
Lora Smith |
Emil Brown |
Alex Jackson |
Martin Davis |
Discussie:
Om een string aan een andere toe te voegen en het ene resultaat terug te geven, gebruikt u de || exploitant. Dit voegt twee strings van links en rechts bij elkaar en retourneert één resultaat. Als u de naam van de kolom gebruikt, plaats deze dan niet tussen aanhalingstekens. Als u echter een tekenreekswaarde als spatie of tekst gebruikt, plaatst u deze tussen aanhalingstekens.
In ons voorbeeld hebben we een spatie toegevoegd aan first_name
en dan de kolom last_name
. Deze nieuwe kolom heet full_name
.
U kunt ook een speciale functie gebruiken:CONCAT. Er is een lijst met strings of namen van kolommen nodig om als argumenten samen te voegen:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
De resultaten zijn identiek.
De functie CONCAT() is echter beter voor het ophalen van gegevens uit een kolom met NULL-waarden. Waarom? Omdat, wanneer een NULL wordt opgenomen in de waarden die moeten worden samengevoegd, de operator NULL als resultaat retourneert. In het geval van CONCAT(), wordt NULL niet weergegeven.
Bekijk het resultaat van de || operator als Emill geen achternaam heeft geregistreerd:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
volledige_naam |
---|
Lora Smith |
NULL |
Alex Jackson |
Martin Davis |
Kijk naar de CONCAT-functie voor dezelfde gegevens:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
volledige_naam |
---|
Lora Smith |
Emil |
Alex Jackson |
Martin Davis |