フィールドが空白(nullでない)かどうかを検出し、それ以外のフィールドを選択するにはどうすればよいですか?空欄の場合は空欄を選択
本当に必要なのは、IsNullと同じように動作するIsBlank関数ですが、空白があります。
REPLACEは空白では機能しません。COALESCEはNULLSとしか動作しません。
フィールドが空白(nullでない)かどうかを検出し、それ以外のフィールドを選択するにはどうすればよいですか?空欄の場合は空欄を選択
本当に必要なのは、IsNullと同じように動作するIsBlank関数ですが、空白があります。
REPLACEは空白では機能しません。COALESCEはNULLSとしか動作しません。
COALESCEとNULLIFの組み合わせはどうですか。
SELECT COALESCE(NULLIF(SomeColumn,''), ReplacementColumn)
FROM SomeTable
EDIT:mssqlでIF()
を使用することはできません。
あなたのSQLのSELECT部分にIF文を使用します。
SELECT IF(field1 != '', field1, field2) AS myfield FROM ...
ニースが、私は2つ以上の列を動作させる必要がある場合、痛みになります。 –
「IF IF(Address2!= ''、Address2、Address3)AS Address FROM Sites'はキーワード 'IF'の近くで誤った構文を与えます。 –
さて、私は愚か者で、mysqlと混乱しています。 'IF()'はmysqlだけで動作するようですので、上記のように 'CASE WHEN THEN ELSE END'を使用してください。私はここにこれを他人に警告として残します:) – MDCore
あなたはいつも、のようなものをISBLANK()関数を書くことができ、この
select
Case WHEN Column1 = '' OR Column1 IS NULL OR LEN (TRIM (Column1)) = 0
THEN Column2
ELSE Column1 END as ColumnName
from TableName
これは私が自分で持っていたものですが、非常にうんざりです。 –
ためCASE
ステートメントを使用することができます
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
COALESCEはRaj Moreのようなcase文を使っているので、* N *個の式をサポートできると思います。 –
興味深い...それは簡単に3列で動作するように拡張することはできますか? –
答え - はい。あなたは次のようにすることができます: 'COALESCE(NULLIF(Address2、 '')、NULLIF(Address3、 '')、Address4)' –
あなたの答えはCase文よりも優雅です。 –