#sql #oracle
Подскажите, каким образом можно отделить в строке буквенную часть от численной например есть чертеж СК-123 или М.123. Нужно отделить левую буквенную часть от правой численной что бы дальше я смогла отсортировать данные сначала по левой части (по алфавиту), затем после знака раз делителя сортировать по правой .
Ответы
Ответ 1
Можете использовать функцию ltrim( string1, [ trim_string ] ), которая удаляет все перечисленные подстроки в trim_string из string1. Примеры использования: SQL> SELECT LTRIM('123123.Ltrim123', '123.') FROM DUAL; LTRIM('123123LTRIM123','123') Ltrim123 SQL> SELECT LTRIM('xyxzyyy-Ltrim', 'xyz-') FROM DUAL; LTRIM('XYXZYYYLTRIM','XYZ') Ltrim Также существует симметричная функция rtrim. ОтсылкаОтвет 2
Можно попробовать с помощью регулярных выражений. Примерно так: with s as ( select 'СК-123' as s from dual union all select 'М.123' as s from dual ) select regexp_substr(s,'[[:alpha:]]+') as symb, regexp_substr(s,'[[:digit:]]+') as num from s
Комментариев нет:
Отправить комментарий