フィールドが空白(nullではない)であるかどうかを検出し、空白である場合に別のフィールドを選択するにはどうすればよいですか?
本当に必要なのは、IsNullと同じように機能しますが、空白を使用するIsBlank関数です。
REPLACEはブランクでは機能せず、COALESCEはNULLでのみ機能します。
COALESCEとNULLIFを組み合わせてみてください。
SELECT COALESCE(NULLIF(SomeColumn,''), ReplacementColumn)
FROM SomeTable
これにはCASE
ステートメントを使用できます
select
Case WHEN Column1 = '' OR Column1 IS NULL OR LEN (TRIM (Column1)) = 0
THEN Column2
ELSE Column1 END as ColumnName
from TableName
編集:mssqlではIF()
を使用できません。
SQLのSELECT部分でIFステートメントを使用します。
SELECT IF(field1 != '', field1, field2) AS myfield FROM ...
いつでも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