2011-10-23 42 views
0

我有一個電話數據庫table有4列:MySQL的複雜的if/else之情況

  • countrycode
  • areacode
  • phonenumber
  • extension

我繼「 Canonical「格式,因爲我有一些國際號碼考慮。

作爲命運會有,一些數字輸入有擴展名。

我有,我用它來自動格式一切查詢,除了擴展:

SELECT CONCAT('+',`countrycode`,'(',`areacode`,')', `phonenumber`) AS `fullnumber` ... 

結果:+1(123)4567890或:+61(08)1234 1234 這個偉大的工程,它可以與我輸出的一些撥號軟件完美配合。

但是,我現在需要在此查詢中包含擴展名。不過,我需要自動格式,它像這樣:

+1(123)4567890 X123

這是比較容易,但由於大多數數字不具有擴展名,我需要一個條件,其中將包括char(x)。這是我的困境,因爲我仍然在查詢中學習條件語句。

任何人在CONCAT中使用奇怪的if/else語句工作?

回答

2

MySQL的IF說法是這樣的:

IF(condition, iftrue, iffalse):如果給定的條件爲真,則返回iftrue參數。否則,返回iffalse參數。

所以,你的查詢可以是這個樣子:

SELECT CONCAT('+',`countrycode`,'(',`areacode`,')', `phonenumber`, IF(`extension` IS NULL, "", CONCAT(" x", `extension`))) AS `fullnumber ... 

MySQL的IF功能是幾個控制流功能之一。有關這些功能的更多信息,請參閱MySQL docs

+0

不錯,我最初嘗試了IF(),我可以看到我的格式是關閉的。謝謝扎克! – coffeemonitor

相關問題