Есть таблица с колонками (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
Комментариев нет:
Отправить комментарий