MySQL заменяет столбец другим, когда ноль - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь получить данные из двух объединенных таблиц в MySQL.

   table1                   table2
   id                         id - foreign key
   name                    address_old
```other col```            address_new

Я хотел бы получить «name» и «address_new» или «name» и «address_old», если «address_new» равно нулю.

Я уже пробовал

ifnull(table2.address_new, tables2.address_old)
CASE WHEN table2.address_new IS NULL 
    THEN table2.address_old 
    ELSE table2.address_new
coalesce(table2.address_new, table2.address_old)

Никто не работает, и я продолжаю получать пустые результаты для них.
Кто-нибудь может мне с этим помочь? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 12 марта 2019

вам нужно проверить как нулевую, так и пустую строку

select t1.name, CASE WHEN table2.address_new IS NULL or  table2.address_new =''
    THEN table2.address_old 
    ELSE table2.address_new address
END as 'Address'
from table1 t1 inner join table2 t2
on t2.id = t1.id
0 голосов
/ 12 марта 2019

Может быть, вам стоит просто проверить наличие данных.Что-то вроде:

(CASE WHEN table2.address_new > '' THEN table2.address_new
      ELSE table2.address_old 
 END)

Или, если пробел и другие не алфавитно-цифровые символы являются проблемой, вы можете найти допустимый символ:

(CASE WHEN table2.address_new REGEXP '[a-zA-Z0-9]' THEN table2.address_new
      ELSE table2.address_old 
 END)
...