Вопрос

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

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

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

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

Есть какие-нибудь идеи?

Это было полезно?

Решение

Что-то вроде

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

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

Другие советы

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

Update Table1
set phonenum = Case
        When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
            Else LTrim(RTrim(Replace(phonenum, '/', '')))
        End

"Очищенный" содержит только числовое значение

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

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top