如何根据oracle 10g中的住宅地址获取排序结果?

Dhr*_*ruv 4 regex sql oracle oracle10g

我想查询Oracle 10g数据库,并根据住宅地址按升序或降序获得结果.所以问题是建立地址的时间是110C或200D,所以根据sql"order by"asc或desc,我在20之前得到200D的结果.例如,如果地址是10 110 112 200D 232 95 20 100A 1050 944

按升序排列将导致: -

 10 100 100A 1050 110 112 20 200D 232 944 95
Run Code Online (Sandbox Code Playgroud)

问题是因为地址中有字符,我不能认为它们是整数或数字,它们必须被视为字符串.

Adr*_*iro 5

使用正则表达式:

警告!未来潜在的非工作代码.我目前没有Oracle实例来测试它.

SELECT YourAddress
FROM YourTable
order by TO_NUMBER(REGEXP_SUBSTR(AddressColumn, '^[0-9]+'));
Run Code Online (Sandbox Code Playgroud)

REGEXP_SUBSTR 将找到应该启动地址的数字子串,将其转换为实数并按顺序排序.

警告:您必须改进查询以处理数字不存在的情况.但是,这个答案可以让你很好地开始.

当需要微调查询时,以下是您应该使用的资源:

并且,是的,REGEXP_SUBSTR可以在Oracle 10g中使用.