我正在尝试从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)
两个人都没有工作,我一直在为这些做出空洞的结果。 谁能帮我这个?提前致谢。
你需要检查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)
或者,如果空格和其他非字母数字字符是个问题,您可以查找有效字符:
(CASE WHEN table2.address_new REGEXP '[a-zA-Z0-9]' THEN table2.address_new
ELSE table2.address_old
END)