Regex 通过使用将varchar转换为\u编号来搜索范围内有空格的varchar

Regex 通过使用将varchar转换为\u编号来搜索范围内有空格的varchar,regex,oracle,Regex,Oracle,我正试图在一个范围内搜索像61123456这样的数字。这被存储为数据库中的varchar。 我是这样做的 TO_编号(REGEXP_REPLACE('61 123456'),'\s')介于TO编号(REGEXP_REPLACE(TN_RANGE_STRT,'\s')和TO编号(REGEXP_REPLACE(TN_RANGE_END,'\s'))之间。 但是,它不起作用 在数据库中,范围存储为61 123455-61 123465 请帮助我。假设像'61 123455'这样的字符串必须转换为数字6

我正试图在一个范围内搜索像
61123456
这样的数字。这被存储为数据库中的varchar。 我是这样做的

TO_编号(REGEXP_REPLACE('61 123456'),'\s')介于TO编号(REGEXP_REPLACE(TN_RANGE_STRT,'\s')和TO编号(REGEXP_REPLACE(TN_RANGE_END,'\s'))之间。

但是,它不起作用

在数据库中,范围存储为
61 123455-61 123465


请帮助我。

假设像
'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), ' ', ''))

这看起来更像oracle而不是mysql。如果是这样,您应该更改标签以吸引oracle专家。在大多数情况下,mysql或oracle只能有一个数据库,除非您有额外的设置,请清楚地提到
数据库名称
,并正确地标记它是
mysql
还是
oracle
。我不太清楚。你能发布一些样本数据和需要的结果来澄清你的需求吗?起始范围是61 123455。。终点范围为61 123465。。我想搜索“61 123456”并检索是否存在任何内容。。i、 e基本上我想搜索该范围内的账户。。但这些字段存储为varchar。所以我不能直接表演。我使用to_number进行转换,使用regexp_replace忽略空格。。但是我缺少一些东西,因为没有结果。请编辑问题,添加一小部分样本数据和该数据所需的结果。这将澄清您的需求,并帮助人们测试一些代码