Страницы

Поиск по вопросам

понедельник, 24 декабря 2018 г.

Удалить ненужные символы в поле MS SQL 2012

Есть таблица с колонками (Column1, Column2, Column3, Column4).
Column4 принимает значения 'dasf895580000000', 'dasf8955sf8000sf0000', 'dasf8955800sf00000 абв', 'абв dasf89558000000sf0sf', '89558000000'
Как удалить всё кроме цифр? Такая проблема встречается очень часто, как создать функцию по удалению ненужных символов в поле?


Ответ

Покажу вариант без функций (оставить только цифры) по одному case на каждую цифру.
select Column1, Column2, Column3, case when len(Column4)>0 and isnumeric(substring(Column4,1,1))=1 then substring(Column4,1,1) else '' end + case when len(Column4)>1 and isnumeric(substring(Column4,2,1))=1 then substring(Column4,2,1) else '' end + case when len(Column4)>2 and isnumeric(substring(Column4,3,1))=1 then substring(Column4,3,1) else '' end + case when len(Column4)>3 and isnumeric(substring(Column4,4,1))=1 then substring(Column4,4,1) else '' end + case when len(Column4)>4 and isnumeric(substring(Column4,5,1))=1 then substring(Column4,5,1) else '' end + case when len(Column4)>5 and isnumeric(substring(Column4,6,1))=1 then substring(Column4,6,1) else '' end + case when len(Column4)>6 and isnumeric(substring(Column4,7,1))=1 then substring(Column4,7,1) else '' end + case when len(Column4)>7 and isnumeric(substring(Column4,8,1))=1 then substring(Column4,8,1) else '' end + case when len(Column4)>8 and isnumeric(substring(Column4,9,1))=1 then substring(Column4,9,1) else '' end + case when len(Column4)>9 and isnumeric(substring(Column4,10,1))=1 then substring(Column4,10,1) else '' end + case when len(Column4)>10 and isnumeric(substring(Column4,11,1))=1 then substring(Column4,11,1) else '' end num from table1

Комментариев нет:

Отправить комментарий