2013-02-19 3 views
0

Очень много MySQL noob, поэтому, пожалуйста, простите меня, если я задаю очевидный вопрос.MySQL - Преобразование телефонных слов в номера

Моя проблема заключается в том, что мне нужно преобразовать телефонные номера из текстового поля в целое. Текстовое поле всегда было бесплатным текстом, поэтому пользователи смогли ввести то, что они хотят. Я обработал 90% строк (пробелы, не-альфа и т. Д.), Но я застрял в переводе 0800 «слов», то есть 0800PHONEME нужно преобразовать в 08007466363. Мне нужно перевести до 10 букв после 0800 номер.

Если возможно, я хотел бы сделать это на уровне БД

Любые идеи/предложения, пожалуйста?

Благодаря

+0

Просто мысль: сделать временную таблицу с буквами и соответствующими номерами, которые вы хотите чтобы конвертировать в, а затем только шаг через номер телефона один символ за один раз. <- высокий уровень, я знаю. –

ответ

0

Я хочу у меня есть шанс/время, чтобы завершить этот пример, но вы должны получить идею:

http://sqlfiddle.com/#!2/73482/1

Просто держать сцепление функции замены для всех номеров.

+0

Это был бы уродливый кусок кода. – Kermit

+0

Вы можете пометить смайлики, если хотите сделать его красивее. Это всего лишь способ ответить на вопрос. –

0

Я думаю, что лучше всего использовать UDF (пользовательскую функцию), такую ​​как REGEXP_REPLACE, чтобы найти и заменить альфы.

0

номер 2:

UPDATE `t_contact` SET `c_phonenumber` = REPLACE(UPPER(`c_phonenumber`),'A','2'); 
UPDATE `t_contact` SET `c_phonenumber` = REPLACE(UPPER(`c_phonenumber`),'B','2'); 
UPDATE `t_contact` SET `c_phonenumber` = REPLACE(UPPER(`c_phonenumber`),'C','2'); 

номер 3:

UPDATE `t_contact` SET `c_phonenumber` = REPLACE(UPPER(`c_phonenumber`),'D','3'); 
UPDATE `t_contact` SET `c_phonenumber` = REPLACE(UPPER(`c_phonenumber`),'E','3'); 
UPDATE `t_contact` SET `c_phonenumber` = REPLACE(UPPER(`c_phonenumber`),'F','3'); 

и так далее ...

+0

Поскольку это одноразовое решение проблемы, я не думаю, что это очень важно использовать уродливые, но простые в использовании команды «перевод» sql. К сожалению, mysql не принимает массивы в качестве аргументов функции. – samuel

+0

Спасибо всем, я использовал REPLACE для каждой буквы - работал как сон, и, как было прокомментировано, это одноразовый, поэтому не обязательно быть слишком красивым – LPlates

Смежные вопросы