web-dev-qa-db-ja.com

MySqlクエリは、選択でNULLを空の文字列に置き換えます

SelectのNULL値を空の文字列でどのように置き換えますか? 「NULL」値を出力することはあまり専門的ではありません。

これは非常に珍しいことであり、私の構文に基づいて動作するはずです。なぜそうならないのかの説明を期待しています。

select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test;

元のテーブルがどのように見えるか、私が欲しいもの、実際に印刷するものの例:

original     wanted      what actually prints
--------     ------      ---------------------
value1       value1      
NULL                     NULL
value2       value2      
NULL                     NULL

あなたが見ることができるように、それは私が望むものの反対を行うので、IS NULLをIS NOT NULLに反転させ、そしてもちろんそれを修正しませんでした。場合、それは動作しませんでした。

編集:以下の3つのソリューションがすべてタスクを実行しているようです。よろしく

select if(prereq IS NULL ," ",prereq ) from test
select IFNULL(prereq,"") from test
select coalesce(prereq, '') from test
55
user1188835

これらの組み込み関数の一部は機能するはずです。

Coalesce
Is Null
IfNull
4
user1284846

NULL値を含むすべての値を本当に出力する必要がある場合:

select IFNULL(prereq,"") from test
102
JScoobyCed
SELECT COALESCE(prereq, '') FROM test

Coalesceは、渡された最初のnull以外の引数を左から右に返します。すべての引数がnullの場合、nullを返しますが、そこで空の文字列を強制しているため、null値は返されません。

また、標準SQLでは COALESCE 演算子がサポートされていることに注意してください。これは IFNULL の場合ではありません。したがって、前者を使用することをお勧めします。さらに、COALESCEは3つ以上のパラメーターをサポートしており、ヌル以外の一致が見つかるまでそれらを繰り返し処理することに注意してください。

72
Mosty Mostacho

以下を試してください。

  select if(prereq IS NULL ," ",prereq ) from test
14
user319198

元の形式はほぼ完璧です。CASEの後にprereqを省略するだけです。

SELECT
  CASE
    WHEN prereq IS NULL THEN ' '
    ELSE prereq
  END AS prereq
FROM test;
3
M.Nemes

COALESCE を試してください。最初のNULL以外の値を返します。

SELECT COALESCE(`prereq`, ' ') FROM `test`
2
SenorAmor

これを試してください、これも空の行を取り除く必要があります:

SELECT prereq FROM test WHERE prereq IS NOT NULL;
0
Hunter McMillen
select IFNULL(`prereq`,'') as ColumnName FROM test

このクエリは「prereq」値を選択しており、値のいずれかがnullの場合、空の文字列が表示されます。

0
Abderrahmane