Объединить 3 столбца в 1 столбец автоматически Postgresql - PullRequest
0 голосов
/ 15 ноября 2018
Columns:
FirstName 
MiddleName 
LastName

Я хочу автоматически объединить в 4-й столбец с именем «FullName», разделенный пробелами. Каждый раз, когда данные вводятся или изменяются в одном из трех указанных выше столбцов, столбец «FullName» обновляется.

Пример данных

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Postgres не поддерживает (начиная с версии 11) виртуальный столбец / производный столбец.

Вместо этого вы можете создать представление.

CREATE OR replace VIEW v_names 
AS 
  SELECT firstname, 
         middlename, 
         lastname, 
         firstname 
         ||CASE 
             WHEN nullif(middlename, '') IS NULL THEN '' 
             ELSE ' ' 
                  ||middlename 
           END 
         ||CASE 
             WHEN nullif(lastname, '')   IS NULL THEN '' 
             ELSE ' ' 
                  ||lastname 
           END AS FullName 
  FROM   names; 

knayak=# INSERT INTO names(FirstName,MiddleName,LastName) VALUES ( 'John', 'Maynard','Keynes');
INSERT 0 1
knayak=# INSERT INTO names(FirstName,MiddleName,LastName) VALUES ( 'John','','Doe');
INSERT 0 1

knayak=# select * from v_names;
 firstname | middlename | lastname |      fullname
-----------+------------+----------+---------------------
 John      | Maynard    | Keynes   | John Maynard Keynes
 John      |            | Doe      | John Doe
0 голосов
/ 15 ноября 2018

дает ответ mysql, так как вы оставили тег mysql:

В MySQL вы можете создать сгенерированный столбец , используя функцию CONCAT_WS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...