Как переписать номера телефонов в T-SQL? - PullRequest
3 голосов
/ 04 марта 2009

У меня вопрос для начинающих в T-SQL.

Мы импортировали листы Excel в SQL Server 2008. Жаль, что эти файлы Excel были отформатированы не так, как должны. Мы хотим, чтобы номер телефона выглядел следующим образом: «012345678», без пробелов в начале и в конце, а также без пробелов внутри. Хуже того, иногда число кодируется с префиксом «0123-2349823» или «0123/2349823».

Обычно я экспортирую файл Excel в файл CSV , затем запускаю магический скрипт Perl для очистки и затем снова импортирую файл Excel.

Тем не менее, было бы интересно узнать, как делать такие вещи с T-SQL.

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 04 марта 2009

Что-то вроде

replace(replace(rtrim(ltrim('0123-2349823')), '-', ''), '/', '')

должно работать. Не выглядит красиво. ;)

2 голосов
/ 04 марта 2009

Я хотел бы сделать это с обновлением и использовать функции «Заменить» и LTrim / RTrim для SQL.

Update Table1
set phonenum = Case
        When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
            Else LTrim(RTrim(Replace(phonenum, '/', '')))
        End
0 голосов
/ 04 марта 2009

«Очистить» содержит только числовое значение

В зависимости от того, содержит ли телефонный номер "-", "/", замените их пустой строкой.

create table #t ( tel varchar(30) )

insert  #t select '0123-2349823' 
insert  #t select '0123/2349823'

select  tel,
        replace(tel, 
            case
                when patindex('%-%', tel) > 0 then '-'
                when patindex('%/%', tel) > 0 then '/'
            end, '') as Cleaned
from    #t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...