web-dev-qa-db-ja.com

列を選択、空の場合は別の列から選択

フィールドが空白(nullではない)であるかどうかを検出し、空白である場合に別のフィールドを選択するにはどうすればよいですか?

本当に必要なのは、IsNullと同じように機能しますが、空白を使用するIsBlank関数です。

REPLACEはブランクでは機能せず、COALESCEはNULLでのみ機能します。

33
graham.reeds

COALESCEとNULLIFを組み合わせてみてください。

SELECT COALESCE(NULLIF(SomeColumn,''), ReplacementColumn)
FROM SomeTable
87
PHeiberg

これにはCASEステートメントを使用できます

select 
Case WHEN Column1 = '' OR Column1 IS NULL OR LEN (TRIM (Column1))  = 0 
     THEN Column2 
     ELSE Column1 END as ColumnName
from TableName
16
Raj More

編集:mssqlではIF()を使用できません。

SQLのSELECT部分​​でIFステートメントを使用します。

SELECT IF(field1 != '', field1, field2) AS myfield FROM ...
4
MDCore

いつでもisBlank()関数を書くことができます。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION isBlank
(
    @CheckExpression varchar, @ReplacementExpression varchar
)
RETURNS varchar
AS
BEGIN
    IF @CheckExpression IS NOT NULL
    BEGIN
        IF @CheckExpression='' or LEN(@CheckExpression) = 0
        RETURN @ReplacementExpression
    ELSE
        RETURN @CheckExpression
    END

    RETURN @ReplacementExpression
END
GO
2
Chris Welsh