Поиск varchar с пробелами в диапазоне, преобразовав его, используя to_number - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь найти число, подобное 61 123456 в диапазоне.Это хранится как varchar в БД.Я сделал что-то вроде этого,

TO_NUMBER(REGEXP_REPLACE(’61 123456′),'\s') BETWEEN TO_NUMBER(REGEXP_REPLACE(TN_RANGE_STRT,’\s’)) AND TO_NUMBER(REGEXP_REPLACE(TN_RANGE_END,’\s’))

Но это не работает.

В БД диапазон хранится как 61 123455-61 123465

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 06 июня 2018

Если предположить, что строка типа '61 123455' должна быть преобразована в число 61.123.455, а формат диапазонов фиксирован, вам может понадобиться что-то вроде этого:

with yourTable(range) as (
    select '61 123455-61 123465' from dual union
    select '61 100-61 200' from dual
)
select *
from yourTable
where to_number(replace('61 123456', ' ', '')) between
        to_number(replace(regexp_substr(range, '[0-9 ]*'), ' ', '')) AND
        to_number(replace(regexp_substr(range, '(-)([0-9 ]*)', 1, 1, 'i', 2), ' ', ''))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...