5

特にMySqlで、nullであるすべての戻り値のデフォルト値を設定する方法はありますか?

それ以外の

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;

また、各ステートメントを 1 回書き出すビューを作成し、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

You can try case statement for sql as below

    select 
CASE 
  WHEN foo is null THEN 0  else foo end

  from urtable

and then same for other columns

于 2016-06-09T22:32:13.783 に答える