在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
在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
之后同样适用于其他列