有没有办法为所有返回的null值设置默认值,特别是在MySql中?
而不是
SELECT
IFNULL(foo, 0),
IFNULL(bar, 0),
IFNULL(baz, 0)
FROM table
我想做点什么:
SELECT IFNULL(*, 0)
FROM table
// this does not work, but I'm looking for something like it
答案 0 :(得分:2)
SQL中的函数结果是单个值(列),而不是列的列表。所以没有,也不可能是这样的结构。不幸的是,您必须单独处理每一列。
答案 1 :(得分:0)
如果您不关心保留NULL
,可以在表格中添加默认值:
ALTER TABLE yourTable ALTER foo SET DEFAULT 0;
您还可以创建一个视图,在该视图中您可以写出每个IFNULL()
语句一次,并使用它来保存,不会一直重新键入它。
但正如其他人指出的那样,没有任何构造可以像你希望的那样去做。
您还可以使用表格元数据快速执行此类重复操作:
SELECT CONCAT("IFNULL(",`COLUMN_NAME`,",0)")
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename'
AND `TABLE_NAME`='yourtablename';
答案 2 :(得分:-1)
你可以尝试sql的case语句,如下所示
select
CASE
WHEN foo is null THEN 0 else foo end
from urtable
然后与其他列相同