SELECT *语句

时间:2016-06-09 22:07:51

标签: mysql sql ifnull

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

3 个答案:

答案 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

然后与其他列相同