mysql复杂的if / else场景

时间:2011-10-23 07:21:35

标签: mysql case

我有一个包含4列的电话数据库table

  • countrycode
  • areacode
  • phonenumber
  • extension

我正在遵循“规范”格式,因为我需要考虑一些国际号码。

而且命运也会如此,输入的一些数字会有扩展名。

我有一个查询,我用它来自动格式化所有内容,但扩展名为

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

结果:+1(123)4567890或:+61(08)1234 1234 这很好用,它可以与我导出的一些拨号软件完美配合。

但是,我现在需要在此查询中包含扩展名。但是,我需要自动格式化它:

+1(123)4567890 x123

这很容易,但由于大多数数字都没有扩展名,我需要创建一个包含char(x)的条件。这是我的困境,因为我仍然在查询中学习条件语句。

有人在CONCAT中使用奇怪的if / else语句吗?

1 个答案:

答案 0 :(得分: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