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