20

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

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

4

4 に答える 4

31
SELECT IFNULL(NULLIF(Field1,''),Field2)

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

于 2012-11-05T16:11:10.540 に答える
8

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

Select COALESCE(NULLIF(Field1,''), Field2)
于 2013-11-22T19:11:40.077 に答える
6

CASE次の式を使用できます。

CASE WHEN Field1 <> '' THEN Field1 ELSE Field2 END
于 2012-11-05T16:11:43.370 に答える
0

NULLとBlankの両方を比較するには、CASEを使用します。

SELECT CASE 
        WHEN Field1 IS NULL
            OR LEN(LTRIM(RTRIM(Field1))) < 1
            THEN Field2
        ELSE Field1
        END;

空白を比較するには、''を使用せず、LEN、LTRIM、RTRIMを使用します。場合によっては、空白に複数のスペースが含まれることがあります。

于 2021-07-19T18:25:09.280 に答える