обновить столбец данных данными из другого столбца плюс дополнительное ключевое слово - PullRequest
1 голос
/ 17 января 2012

Я пытался использовать комбинацию обоих этих двух предыдущих вопросов Вопрос 1 Вопрос 2 , чтобы помочь мне с моей проблемой.

Моя проблема в том, что я пытаюсь установить один столбец в DB2 равным другому столбцу с начальным и конечным значением. У меня есть возможность сделать это в два этапа: добавить сначала S-, а затем на втором проходе добавить -000 в конце, но в настоящее время я сталкиваюсь с проблемой, что CONCAT не работает в DB2, как в MYSQL.

Pre-преобразование

name  |   loc      |  group
-----------------------------------
sam   |   123      |   
jack  |   456      |   
jill  |   987      |   
mark  |   456      |   
allen |   123      |   
john  |   789      |   
tom   |   123      |   

Post-преобразование

name  |   loc      |  group
-----------------------------------
sam   |   123      |   S-123-000
jack  |   456      |   S-456-000
jill  |   987      |   S-987-000
mark  |   456      |   S-456-000
allen |   123      |   S-123-000
john  |   789      |   S-789-000
tom   |   123      |   S-123-000

SQL, который я пытаюсь использовать:

UPDATE table 
SET GROUP = CONCAT('S-',LOC,'-000') 
WHERE LENGTH(RTRIM(LOC)) = 3

Буду признателен за любую помощь или руководство.

Ответы [ 2 ]

1 голос
/ 02 октября 2014

Существует также оператор сцепления: ||

Однако некоторые рекомендуют его не использовать

UPDATE table 
SET GROUP = 'S-'||LOC||'-000'
WHERE LENGTH(RTRIM(LOC)) = 3

Если поле LOC длиннее 3 и вы не хотите использовать пробелы

UPDATE table 
SET GROUP = 'S-'||RTRIM(LOC)||'-000'
WHERE LENGTH(RTRIM(LOC)) = 3
1 голос
/ 17 января 2012

DB2 CONCAT принимает только два аргумента, поэтому вы можете использовать их для достижения желаемого результата.

UPDATE table 
SET GROUP = CONCAT(CONCAT('S-',LOC),'-000') 
WHERE LENGTH(RTRIM(LOC)) = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...