web-dev-qa-db-ja.com

空白(nullではない)フィールドの場合はCOALESCE()

MySQLの関数と比較している2つのフィールドがあります COALESCE() 。たとえば、COALESCE(Field1, Field2)。問題は、Field1が空白になることもありますが、nullではないことです。 nullではないため、COALESCE()は、空白であってもField1を選択します。その場合、Field2を選択するために必要です。

クエリにif-then-else(CASE)ステートメントを記述してこれをチェックできることは知っていますが、空白であるがnullではないフィールド用のCOALESCE()のような単純な関数はありますか?

17
Luke Shaheen
SELECT IFNULL(NULLIF(Field1,''),Field2)

NULLIFは、Field1が空白の場合はNULLを返し、IFNULLは、空白またはNULLでない場合はField1を返し、それ以外の場合はField2を返します。

28
Andrea Ligios

私はここでパーティーに遅れていることを知っていますが、COALESCE()を使用しながらこれを行う方法があります。これは、値がNULLまたは ''の場合に機能します。

Select COALESCE(NULLIF(Field1,''), Field2)
6
Beachhouse

CASE式を使用できます。

CASE WHEN Field1 <> '' THEN Field1 ELSE Field2 END
6
ypercubeᵀᴹ