2011-01-05 10 views
2

これはmysqlから可能かどうか疑問に思っていました。mysqlは空の値を置き換えます

SELECT username FROM users_table

ユーザ名がNULLの場合、私はこの何かが価値があるあなたはIFを使用することができますに:)

答えて

6
SELECT IFNULL(username, 'Unknown') FROM users_table 

OR

SELECT COALESCE(username, 'Unknown') FROM users_table 
+0

nice one :) thnx m8 question、phpの代わりにこのメソッドを使用していますあなたはどちらが速いと思いますか?...単なる愚かな質問ですが、知っておく価値があります:) – Val

+0

両方とも同じでなければなりません。 'IFNULL'はmysqlであり、 'COALESCE'は他のSQLの共通文字列です。 (COALESCEは複数の引数を受け入れるのでやや遅くなるかもしれませんが)違いはあまりにも小さいと思います – ajreal

+0

@Val PHPを使用すると空白のユーザを別々に扱うことができます(例えば、CSSクラスをイタリック体で表示するなど) 。 –

2

探している場合、それだけで不思議と快適なPHPでそれを行うことができ、「不明」のようなものを表示したいと思います関数。

IF(condition, if_true, if_false) 

だから、あなたのクエリは次のとおりです。

SELECT IF(NULL(username), "Unknown", username) FROM users_table 

もっと読むhttp://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if

+0

@Piskvor私は私の答えを修正お願いします。 –

+0

「IF(ISNULL(... '?)」という参照でNULL()関数を見つけられないようです... – Piskvor

1

なく、少なくとも最後に、CASE

SELECT 
    CASE 
     WHEN username IS NULL THEN '(Unknown)' 
     ELSE username 
    END AS username 
FROM users_table 

それはあなたが複雑な式を持ったときに一般化するのは簡単です(あなたが望むとおりにWHENできるだけ多くを追加することができます)、それは多くのDBMSで動作しますので、私はそれが好きです。

(この場合、私は@ajreal's answerからCOALESCEを使用すると思います。)

関連する問題