--Скрипт функции приведение телефонного номера к общему виду. Очистка данных под требуемый формат
create FUNCTION XXXX.func_CLEAR_PHONE (@InpStr varchar(50))
RETURNS varchar(10)
AS
BEGIN
/*
Функция возвращает "чистый" телефонный номер, 10 знаков, без всяких "+7", "8", разделителей и прочего
*/
— declare
— @InpStr varchar(50) = ' 8 800=100-32,00&'
--------— Согласно постановке Задачи, тел.№ в ИС может содержать дополняющие ноли '0000000000' - такое убираем сразу —---
set @InpStr = replace(@InpStr, '0000000000', '')
--------— Удаляем всевозможные символы —-------
set @InpStr = translate(@InpStr, '^&*#%()_`~{}/?\|<>@-+.,:;', ' ')
--------— Удаляем пробелы пробелы —--------------
set @InpStr = replace(replace(replace(@InpStr,' ',char(7)+char(8)),char(8)+char(7),''),char(7)+char(8),'')
---------— Чистка закончена —----------------
--------— Если № содержал вводные '+7' или '8' (во всевозможных вариациях) - избавляемся —-----------
if len(@InpStr) = 11 and (left(@InpStr, 1) = 7 or left(@InpStr, 1) = 8)
set @InpStr = right(@InpStr,10)
--------— Иначе признаем бессилие логики перед людской фантазией —-----------
else
set @InpStr = 'Не тел.№!'
— select @InpStr
return @InpStr
END
— select XXXX.func_CLEAR_PHONE(' 8 800*100-32,00&')
#sql #mssql #шпаргалкаsql #functionmssql