Проблем:
Искате да обедините низове от две колони на таблица в една.
Пример:
Нашата база данни има таблица с име student
с данни в следните колони:id
, first_name
и last_name
.
id | first_name | фамилно_име |
---|---|---|
1 | Лора | Смит |
2 | Емил | Кафяв |
3 | Алекс | Джаксън |
4 | Мартин | Дейвис |
Нека добавим първото име към фамилното име на ученика в един низ. Използвайте интервал между всяко име.
Решение:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
Тази заявка връща записи в една колона с име full_name
:
пълно_име |
---|
Лора Смит |
Емил Браун |
Алекс Джаксън |
Мартин Дейвис |
Дискусия:
За да добавите низ към друг и да върнете един резултат, използвайте || оператор. Това добавя два низа отляво и отдясно заедно и връща един резултат. Ако използвате името на колоната, не го затваряйте в кавички. Въпреки това, когато използвате стойност на низ като интервал или текст, оградете го в кавички.
В нашия пример добавихме интервал към first_name
и след това колоната last_name
. Тази нова колона се нарича full_name
.
Можете също да използвате специална функция:CONCAT. Необходим е списък с низове или имена на колони, които да се присъединят като аргументи:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
Резултатите са идентични.
Въпреки това, функцията CONCAT() е по-добра за извличане на данни от колона със стойности NULL. Защо? Тъй като, когато NULL е включено в стойностите, които трябва да бъдат обединени, операторът връща NULL като резултат. В случай на CONCAT(), NULL няма да се показва.
Вижте резултата от || оператор, ако Emill няма записано фамилно име:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
пълно_име |
---|
Лора Смит |
NULL |
Алекс Джаксън |
Мартин Дейвис |
Вижте функцията CONCAT за същите данни:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
пълно_име |
---|
Лора Смит |
Емил |
Алекс Джаксън |
Мартин Дейвис |