2017-07-18 110 views
1

我在MySQL數據庫有一個表,有電話和名字 像:如何運行if語句

  • PHONE1,NAME1
  • PHONE2,NAME2

等..

,我列名單,但我想更換一個名稱,即空用手機在我的結果

IF(name IS NULL){SELECT phone AS name}else{SELECT name} FROM users

,並得到:

  • 名1
  • 名2
  • 電話3
  • NAME4

有沒有辦法做到這一點?

+0

你使用MySQL或MS SQL Server? (不要標記不涉及的產品。) – jarlh

回答

3

的​​3210功能似乎是一個簡單的方法來實現這一目標:

SELECT COALESCE(name, phone) FROM users 
+0

'IFNULL'有什麼區別嗎? (我習慣了TSQL'ISNULL') – Filburt

+0

@Filburt'ifnull'只接受兩個參數,而'coalesce'接受可變數量的參數並返回第一個非'null'值。另外,'coalesce'是一個標準的ANSI函數,而AFAIK,'ifnull'則不是。 – Mureinik

+0

它工作正常,很容易感謝很多 – Clement

1

除了COALESE功能,或更復雜的IF語句,你可以使用CASE聲明:

SELECT CASE WHEN name IS NULL THEN phone ELSE name END AS name_or_phone 

如果你涉及多個表,加入他們的行列,並在CASE引用它們:

SELECT CASE WHEN users.name IS NULL THEN phones.phone ELSE users.name END AS name_or_phone 
FROM users 
LEFT JOIN phones on phones.user_id = users.user_id 

有關MySQL文檔,請參閱Case statements

1

試試這個:

IF (SELECT name FROM tbl_your WHERE name IS NULL) SELECT phone AS name 
ELSE SELECT name;