5

有没有办法为所有返回的值为 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
4

3 回答 3

4

SQL 中函数的结果是单个值(列),而不是列列表。所以不存在,也不可能存在这样的结构。不幸的是,您必须单独处理每一列。

于 2016-06-09T22:28:35.680 回答
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';
于 2016-06-09T22:28:54.017 回答
-1

您可以尝试以下 sql 的 case 语句

    select 
CASE 
  WHEN foo is null THEN 0  else foo end

  from urtable

然后其他列也一样

于 2016-06-09T22:32:13.783 回答