Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица с кодами операторов с привязкой по странам.
Есть номер телефона.
Как узнать, к какой стране привязан номер?
Делается это как-то через ф-цию REGEXP CONCAT("^", country.code).
Заранее спасибо.
Неактивен
Зависит от формата, в котором дан номер телефона.
http://dev.mysql.com/doc/refman/5.1/en/ … tions.html
Из номера телефона вырезаете код и делаете запрос к таблице.
Неактивен
Например +380501669945
В таблице со странами есть коды как из 1, так и из 2 и из 3 символов. По номеру я еще не знаю, что именно в нем код.
Неактивен
Тогда никак. Если вы сами не можете сформулировать правило (набор правил), которым из номера телефона извлекается код, то..
Неактивен
Т.е., я не могу? Берем "+" и первые 3 цыфры - проверяем, есть ли такой код в таблице, если нет, то берем первые 2 и так же для 1. Как это на SQL запрограммировать?
Неактивен
Можно конечно и одним запросом, например:
select * from (
select 3 as ord, t.* from `таблица` t where `код` = SUBSTRING('телефон',2,3)
union
select 2 as ord, t.* from `таблица` t where `код` = SUBSTRING('телефон',2,2)
union
select 1 as ord, t.* from `таблица` t where `код` = SUBSTRING('телефон',2,1)) order by ord desc limit 1;
Но это извращение. Лучше пишите хранимую процедуру (если хотите на mysql) или во внешнем скрипте.
Неактивен
Мне сказали использовать ф-цию REGEXP CONCAT("^", country.code). Только я никогда не пользовал регекспв МуСКуЛе.
Неактивен
Так я ведь уже приводил ссылку на документацию
http://dev.mysql.com/doc/refman/5.1/en/ … tor_regexp
Неактивен
Оно же выберет мне первый попавшийся код, правильно? Меня такое устраивает :-)
Неактивен
Нет, выберет все три варианта.
Неактивен
Спасибо, все работает.
Неактивен