Нужен сценарий SQL для обновления нового столбца со значениями, объединенными из 3 столбцов одной таблицы - PullRequest
0 голосов
/ 18 октября 2019

Мне нужно подготовить сценарий SQL, который будет передан моей команде поддержки производства, чтобы запустить его в работе. Мы создали новый столбец в таблице DB2. Этот столбец должен быть заполнен данными путем объединения трех значений столбца одной и той же таблицы в одной строке.

Чтобы получить историю, весь текст причины, который вводится во внешнем интерфейсе, вставляется в таблицу запросов, разделяясь на три столбца. Поскольку они имели ограниченную длину, мы создали новый столбец с увеличенной длиной, и в дальнейшем все вставки перейдут в новый столбец. Но нам нужно переместить все существующие данные в старых 3 столбцах в его новый. Это обновление SQL - разовое упражнение.

Таблица: tab_request

enter image description here

Мы добавили новый столбец, чтобы увеличить длину символа и выровнять его с другой номенклатурой таблицы. Теперь мне нужен скрипт для обновления текста-причины столбца, как показано ниже

enter image description here

Ответы [ 3 ]

0 голосов
/ 18 октября 2019

обновить tab_request set reasontext = CONCAT (причина_1, '', причина_2, '', причина_3)

0 голосов
/ 18 октября 2019

Если вы хотите избежать ненужных пробелов - в случае, если по некоторым причинам NULL - тогда вы можете использовать trim() с coalesce():

update table1
    set reasontext = trim(coalesce(' ' || reason_1, '') ||
                          coalesce(' ' || reason_2, '') ||
                          coalesce(' ' || reason_3, '') 
                         );

Это эквивалентно concat_ws() доступно в некоторых базах данных.

0 голосов
/ 18 октября 2019

update set field1 || .... должен быть вашим сценарием dml. используйте функцию coalesce() для преобразования этих значений null в ''.

Update table1
set reasontext = 
    (coalesce(reason_1, '') || ' ' || coalesce(reason_2,'') || ' ' || coalesce(reason_3,''))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...