2016-09-12 6 views
0

私はxxxを表示しようとしていますが、列が空であるかどうかは分かりませんが、xxxではなく空を返します。以下のコードを使用しようとしていますが、それは私のために働いていません。私はそれを整理するのを助けてください。mysqlの大文字小文字が使用されていないときに使用されています

SELECT 
CASE WHEN t.`rate` IS NULL THEN 'xxx' 
WHEN t.`rate`=5 THEN 2 
ELSE 3 
END rate FROM `kob_tax` t 
WHERE t.`id_country` = 110 AND t.`id_state` IN(0) AND t.`id_tax_rules_group`=5 
+0

'rate'のデータ型は? – Barmar

+0

空を返す方法はありません。 'xxx'、' 2'、 '3'のいずれかを返す必要があります。 – Barmar

+0

空のセルをテストするには、おそらく別のWHENが必要です。 'WHEN t.rate = ''それから 'xxx' '。 –

答えて

0

ケースステートメントは、このように記述する必要があります。あなたはrate値は空にすることができます言ってい:http://sqlfiddle.com/#!9/19f500/1/0

注:

SELECT 
    CASE 
    WHEN t.`rate` IS NULL THEN 'xxx' 
    WHEN t.`rate`='' THEN 'xxx' 
    WHEN t.`rate`='5' THEN '2' 
    ELSE '3' 
    END 
    as rate FROM `kob_tax` t 
    WHERE t.`id_country` = 110 AND t.`id_state` IN(0) AND t.`id_tax_rules_group`=5 

は、このデモの例を参照してください。私が試した限りでは、INTなどの数値データ型を持つ列は、空の値を無効とみなします。したがって、レートはvarcharと仮定しています。

+0

カラムがNULL可能な場合は、NULLにすることで空にすることができます。私のsqlfiddleを参照してください。 – Barmar

+0

たとえそれがvarcharであったとしても、彼の元のクエリはどうやって失敗するでしょうか?値が '''ならば、' ELSE'節に行き、空文字列ではなく '3'を返します。 – Barmar

+0

@Barmar OPはデータ型がintかvarcharかを指定していません。クエリからはint型のように見えますが、彼の言葉( "空")からはvarcharと思われます。私は彼がvarcharデータ型の間違ったクエリを書いているかもしれないと思った。だから、私は同じことを実証することでいつものように答えました。 OPが皆さんにすでに明確化を求めていると判断させてください......... – geeksal

関連する問題