2017-02-27 21 views
0

IF文を使用して次のクエリがあります。 1つのフィールドが空の場合は、別のフィールドの値を含むStringを出力する必要があります。IF文の文字列に他のフィールドを追加

SELECT IF(field1 IS NULL or field1 = '', 'Field is empty but field 2 says field2', field1 )AS field1 FROM... 

フィールドが空であるが、フィールド2は、フィールド2

を言う文字列のみ出力、それは意志上記のように、私は、クエリを入力すると、出力は次のようになります

フィールドは空ですがフィールド2は5 (5はフィールドの値)

また、フィールドを引用符で囲んでみましたが、これはmysqlエラーをスローします。

私は多分引用符の方法が正しいと思うが、私は文字列のコネクタまたはそのようなものがありません。

アイデア?

答えて

2

CASEを学んでください。 IF()はMySQL固有のものです。 CASEは標準であり、ほとんどのデータベースで使用できます。しかし、あなたの質問への答えはCONCAT()REPLACE()です:

SELECT (CASE WHEN field1 IS NULL OR field1 = '' 
      THEN CONCAT('Field is empty but field 2 says ', field2) 
      ELSE field1 
     END) AS field1 
FROM ... ; 

私もREPLACE()を使用して、このようなフォーマットを書くのが好き:

SELECT (CASE WHEN field1 IS NULL OR field1 = '' 
      THEN REPLACE('Field is empty but field 2 says {0}', '{0}', field2) 
      ELSE field1 
     END) AS field1 
FROM ... ; 

これは、簡単に、最終的な文字列がどのように見えるかを参照することができます。

+0

私はReplaceメソッドを選択しました。どうもありがとう! – user3725253

0

SQLは、文字列に変数値を動的に挿入する方法を知るには十分スマートではありません。指定したリテラル値が出力されます。それを連結する必要があります:

SELECT IF(field1 IS NULL or field1 = '', CONCAT('Field is empty but field 2 says ', field2), field1 )AS field1 FROM 
関連する問題