Обновить столбец значением из двух потенциальных столбцов - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть 3 разных столбца для телефонных номеров, которые мне нужно исправить в моей таблице. Моя цель состоит в том, чтобы заменить телефон (если он пустой или нулевой) значением phone2 или phone 3. Мне все равно, какой это телефон, если он номер телефона. Я знаю, как сделать это с одним столбцом (см. Код ниже), но не могу понять, как использовать оператор OR для 3-го столбца. Запрос и данные ниже.

Исходный запрос

update test.10_master 
set Phone = phone2
WHERE phone IS NULL OR phone = ''

Исходные данные

id    phone       phone2      phone3
1     1111111111
2                 2222222222        
3                             3333333333
4                 2222222222  3333333333      
5     1111111111  2222222222  

Что я хочу увидеть

id    phone       phone2      phone3
1     1111111111
2     2222222222  2222222222        
3     3333333333              3333333333
4     2222222222  2222222222  3333333333      
5     1111111111  2222222222    

Буду очень признателен за любые предложения. Я действительно хочу избежать двух разных запросов

1 Ответ

1 голос
/ 03 апреля 2020

Чтобы справиться со значениями null, вы можете использовать coalesce():

update master
set phone = coalesce(phone2, phone3)
where phone is null

Это обновление phone с null с phone2 или phone3 (первое не -null column wins).

Если вы хотите избежать пустых строк, а также null s:

update master
set phone = case when phone2 is null or phone2 = '' then phone3 else phone2 end
where phone is null or phone = ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...