有没有办法为所有返回的值为 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
SQL 中函数的结果是单个值(列),而不是列列表。所以不存在,也不可能存在这样的结构。不幸的是,您必须单独处理每一列。
如果您不关心保留,可以将默认值添加到表中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';
您可以尝试以下 sql 的 case 语句
select
CASE
WHEN foo is null THEN 0 else foo end
from urtable
然后其他列也一样