Есть рабочая Postgres SQL БД. Есть приложения которые с ней работают. Есть таблица, в которой есть текстовое поле номера телефона, без всякого форматирования. Одна запись содержит один номер. Но поскольку база используется с лохматых времен, номера все вбиты как попало. Например,
+420 773 74 43 54 (с пробелами)
420774436432 (всё слитно, и без плюса)
77237 8334 (просто как попало, и без кода страны)
+(420) 77378 03 95 (так же как попало, и со скобками)
и т.д.
Т.е. просто как попало, без маски ввода и всякого форматирования.
Хочется привести к одному читаемому виду с каким либо форматированием. Номера все полные и валидные по количеству цифр.
Например, пусть все номера будут записаны вот так: +(420) 773 744354
Как это сделать? Средствами SQL можно?
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, Мёртвый Даун, Вы писали:
МД>Как это сделать?
Добавить в таблицу столбец и записать туда номер, приведенный к каноническому виду. Для приложений столбцы можно потом переименовать.
МД>Средствами SQL можно?
Технически да, вопрос только в том, хватит ли его выразительности (и твоего владения), для всех случаев вашего "как попало". Но учитывая "БД совсем не силен", делай лучше кодом.
МД>Например, пусть все номера будут записаны вот так: +(420) 773 744354 МД>Как это сделать? Средствами SQL можно?
1. Пофиксить данные в бд.(регулярками/скриптом/вручную напр.)
2. Показывать данные как надо.
Підтримати Україну у боротьбі з країною-терористом.
МД>Т.е. просто как попало, без маски ввода и всякого форматирования. МД>Хочется привести к одному читаемому виду с каким либо форматированием. Номера все полные и валидные по количеству цифр. МД>Например, пусть все номера будут записаны вот так: +(420) 773 744354 МД>Как это сделать? Средствами SQL можно?
Разумеется, можно. Только перед началом экспериментов заведи отдельное поле или табличку и складывай результат туда. Во избежание.
Здравствуйте, Мёртвый Даун, Вы писали:
МД>В БД совсем не силен, поэтому есть вопрос.
МД>Есть рабочая Postgres SQL БД. Есть приложения которые с ней работают. Есть таблица, в которой есть текстовое поле номера телефона, без всякого форматирования. Одна запись содержит один номер. Но поскольку база используется с лохматых времен, номера все вбиты как попало. Например, МД>+420 773 74 43 54 (с пробелами) МД>420774436432 (всё слитно, и без плюса) МД>77237 8334 (просто как попало, и без кода страны) МД>+(420) 77378 03 95 (так же как попало, и со скобками)
МД>и т.д.
МД>Т.е. просто как попало, без маски ввода и всякого форматирования.
МД>Хочется привести к одному читаемому виду с каким либо форматированием. Номера все полные и валидные по количеству цифр.
МД>Например, пусть все номера будут записаны вот так: +(420) 773 744354
МД>Как это сделать? Средствами SQL можно?
Translate(fild_name,'+() ', null) удалит всё лишнее.
Я бы хранил в поле типа намбер, а в удобочитаемый вид приводил при отображении с помощью формат_маск.
«Национализм во мне столь естественный, что никогда никаким интернационалистам его из меня не вытравить»
Менделеев Д. И.
Здравствуйте, wildwind, Вы писали:
W>Не смог бы. Телефонные номера могут состоять не только из цифр.
Хм.. если добавочные с *#, то их можно хранить отдельно. W и P — это к способу набора номера, а не к самому номеру. (Хотя ты прав — такое лучше иметь в базе) А что ещё, о чём я не знаю?
По любому — хранить надо в самом минимальном виде, без украшений из пробелов, скобок и тире.
«Национализм во мне столь естественный, что никогда никаким интернационалистам его из меня не вытравить»
Менделеев Д. И.
Здравствуйте, Мёртвый Даун, Вы писали:
МД>В БД совсем не силен, поэтому есть вопрос.
МД>Есть рабочая Postgres SQL БД. Есть приложения которые с ней работают. Есть таблица, в которой есть текстовое поле номера телефона, без всякого форматирования. Одна запись содержит один номер.
Это абсолютно правильный подход, т.к. телефонный номер — вещь сложная. Клиенты в это поле могут писать что угодно, включая предпочтительное время звонка, "позовите ивана петровича" и т.п.
Унификация номера телефона имеет смысл только при его автоматической обработке — смс-ботом например.
Здравствуйте, biochemist, Вы писали:
B>Здравствуйте, wildwind, Вы писали:
W>>Не смог бы. Телефонные номера могут состоять не только из цифр. B>Хм.. если добавочные с *#, то их можно хранить отдельно. W и P — это к способу набора номера, а не к самому номеру. (Хотя ты прав — такое лучше иметь в базе) А что ещё, о чём я не знаю?