SQL Форматирование поля - PullRequest
0 голосов
/ 09 марта 2012

В моей БД у меня есть столбец с именем telephone number.
Большинство чисел ### - ### - #### некоторые из них ###########. Как я могу выполнить запрос для форматирования всех чисел, чтобы они выглядели одинаково?

Я бы предпочел:

###-###-#####

Ответы [ 3 ]

1 голос
/ 09 марта 2012

Я бы использовал язык сценариев для чего-то подобного. В PHP:

$string = "1234567890";
$formatted_string = substr($string,0,3)."-".substr($string,3,3)."-".substr($string,6,4);
1 голос
/ 09 марта 2012

Я очень надеюсь, что вы имеете дело только с номерами в США (предположительно из вашего примера).Как только вы начинаете выходить на международный уровень, все становится сложнее.Я также надеюсь, что вариации - это только те два, которые вы сказали ... SQL не очень хорош в этом, но здесь все идет.

EDIT Запрос SQLite, как и было запрошено.Я использовал документацию SQLite, в частности основные функции http://www.sqlite.org/lang_corefunc.html и операторы выбора http://sqlite.org/lang_select.html.

select SUBSTR(Phone, 1, 3) + '-' +
         SUBSTR(PHONE, 4, 3) + '-' + 
         SUBSTR(PHONE, 7, 4)
from (
    select REPLACE(REPLACE(REPLACE(REPLACE(Phone, '-', ''), '(', ''), ')', ''), ' ', '') Phone
    from source
) xx

Мои оригинальные запросы работают в MS SQL.

select SUBSTRING(Phone, 1, 3) + '-' + 
         SUBSTRING(PHONE, 4, 3) + '-' + 
         SUBSTRING(PHONE, 7, 4)
from source
where CHARINDEX(Phone, '-') = 0

Вы можете рассмотретьочистка всех телефонных номеров в первую очередь.Например:

select SUBSTRING(Phone, 1, 3) + '-' +
         SUBSTRING(PHONE, 4, 3) + '-' + 
         SUBSTRING(PHONE, 7, 4)
from (
    select REPLACE(REPLACE(REPLACE(REPLACE(Phone, '-', ''), '(', ''), ')', ''), ' ', '') Phone
    from source
) xx

Номера телефонов могут быть до смешного сложными.Например, я пропустил периоды в этой уборке.Я настоятельно рекомендую очистить их в другом коде, кроме T-SQL.

0 голосов
/ 09 марта 2012
SELECT CASE WHEN LENGTH(telephone_number)=10
            THEN Do Something
            ELSE DEfault
       END
FROM YOURTABLE;


----------

PS: это произвольное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...