2011-01-05 97 views
2

我想知道这是否可能从MySQL。mysql替换一个空值

SELECT username FROM users_table

如果用户名为空,我想显示类似“未知”我能做到这一点在PHP舒服只是想知道,如果这事值得研究:)

回答

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

OR

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

不错的一个:) thnx m8问题,用这个方法代替php版本哪一个你认为更快?......它只是一个愚蠢的问题,但值得了解:) – Val 2011-01-05 11:30:10

+0

两者应该是相同的,''IFNULL'是mysql专用的,而'COALESCE'是其他sql的常用字符串函数。 (COALESCE可能会稍微慢一点,因为它接受多个参数),但我认为差别太小,不能提及 – ajreal 2011-01-05 11:34:03

+0

@Val如果您使用PHP,则可以以不同方式处理空白用户(例如,分配CSS类以斜体显示它们) 。 – 2011-01-05 11:40:09

2

您可以使用IF功能。

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谢谢我固定我的答案。 – 2011-01-05 11:22:58

+0

你是不是指'IF(ISNULL(...'?我似乎无法在参考中找到'NULL()'函数... – Piskvor 2011-01-05 11:28:36

1

最后但并非最不重要的,CASE

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

我喜欢它,因为它很容易,当你有复杂的表达式来概括(只要你想,你可以添加许多WHEN),它在许多DBMS工作。

(在这种情况下,我会使用COALESCE从@ajreal's answer。)