#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 (), и я вижу, где мое форматирование было отключено. спасибо, Зак!