当null时,MySQL用另一个替换列

问题描述 投票:-2回答:2

我正在尝试从MySQL中的两个连接表中检索数据。

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

如果'address_new'为空,我想获得'name'和'address_new',或'name'和'address_old'。

我已经试过了

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)

两个人都没有工作,我一直在为这些做出空洞的结果。 谁能帮我这个?提前致谢。

mysql sql coalesce
2个回答
1
投票

你需要检查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

0
投票

也许您应该检查是否存在数据。就像是:

(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)
© www.soinside.com 2019 - 2024. All rights reserved.