mysql усложнил if / else scenerio

#mysql #case

#mysql #случай

Вопрос:

У меня есть база данных телефонов table с 4 столбцами:

  • countrycode
  • areacode
  • phonenumber
  • extension

Я следую «каноническому» форматированию, поскольку мне нужно учитывать некоторые международные номера.

И, по воле судьбы, некоторые введенные числа имеют расширения.

У меня есть запрос, который я использую для автоматического форматирования всего, кроме расширения:

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

результат: 1(123)4567890 или: 61(08)1234 1234
Это отлично работает, и оно отлично работает с некоторыми программами дозвона, в которые я экспортирую.

Однако теперь мне нужно включить расширение в этот запрос. Однако мне нужно автоматически отформатировать его следующим образом:

1(123)4567890 x123

Это довольно просто, но поскольку большинство чисел не имеют расширения, мне нужно создать условие, которое будет включать символ (x). И это моя дилемма, поскольку я все еще изучаю условные операторы в запросе.

Кто-нибудь работал со странными операторами if / else внутри CONCAT?

Ответ №1:

IF Оператор MySQL работает следующим образом:

IF(condition, iftrue, iffalse) : Если заданное условие истинно, верните iftrue параметр. В противном случае верните iffalse параметр.

Итак, ваш запрос может выглядеть примерно так:

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

Функция MySQL IF является одной из нескольких функций потока управления. Для получения дополнительной информации об этих функциях см. Документы MySQL.

Комментарии:

1. Хорошо, я изначально попробовал IF (), и я вижу, где мое форматирование было отключено. спасибо, Зак!