Как переписать телефонные номера в T-SQL?
-
03-07-2019 - |
Вопрос
У меня есть вопрос для начинающих в 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