--Скрипт функции приведение телефонного номера к общему виду. Очистка данных под требуемый формат 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

Теги других блогов: sql mssql шпаргалкаsql functionmssql