MySQL 将列替换为空时的另一列

MySQL replacing column with another one when null

我正在尝试从 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)

两者都不工作,我一直得到空结果。
谁能帮我这个? 提前致谢。

您需要同时检查 null 和空字符串

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

也许您应该检查数据是否存在。类似于:

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

或者,如果白色 space 和其他非字母数字字符有问题,您可以查找有效字符:

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