当前位置: 首页 > 工具软件 > regexpp > 使用案例 >

oracle 11g regexp_substr,oracle中REGEXP_SUBSTR方法的使用

朱刚捷
2023-12-01

*

from tt_ticket

where 1=1

and (nvl(

(select m.mapper_city

from tt_ticket_city_mapper m

where m.city = trim((select REGEXP_SUBSTR(t.schedule,‘[^/]+‘,1,1)

from dual))) ,

trim((select REGEXP_SUBSTR(t.schedule,‘[^/]+‘,1,1) from dual))

)

=

nvl(

(select m.mapper_city

from tt_ticket_city_mapper m

where m.city = trim(#{departureCity})

),

#{departureCity}

)

)

]]>

and(nvl(

(select m.mapper_city

from tt_ticket_city_mapper m

where m.city = trim((select REGEXP_SUBSTR(t.schedule,‘[^/]+‘,1,2) from dual))

) ,

trim((select REGEXP_SUBSTR(t.schedule,‘[^/]+‘,1,2) from dual))

)

=

nvl(

(select m.mapper_city

from tt_ticket_city_mapper m

where m.city = trim(#{arriveCity})

),

#{arriveCity}

)

]]>

先解释一下:select REGEXP_SUBSTR(t.schedule,’[^/]+’,1,1) from dual

比方:

select REGEXP_SUBSTR(‘虹桥/北京’,’[^/]+’,1,1) from dual

返回的是虹桥

select REGEXP_SUBSTR(‘虹桥/北京’,’[^/]+’,1,2) from dual

返回的是北京

第一个參数是要解析的字符串,第二个是正在表达式,第三个表示字符串解析时的起始位置。比方:

select REGEXP_SUBSTR(‘虹桥/北京’,’[^/]+’,2,1) from dual

返回的是桥

第四个參数表示取拆分后数组里的第几个值。

这种话

nvl(

(select m.mapper_city

from tt_ticket_city_mapper m

where m.city = trim((select REGEXP_SUBSTR(t.schedule,’[^/]+’,1,1) from dual))

) ,

trim((select REGEXP_SUBSTR(t.schedule,’[^/]+’,1,1) from dual))

)

就能够取出/前面的字符串,比方浦东或虹桥,然后在 tt_ticket_city_mapper中查询得到器映射的城市上海。假设没有的话就是它自己

等于号后边相同是做一下转换。

当然,看到这,肯定会有人说为什么不直接存出发城市和到达城市两个字段?那是由于行程可能是 北京/香港/迈阿密/香港/北京 这种数据。

关于这种数据怎么处理。还没有搞,只是在网上大致看了一下。应该是利用存储过程里边操作比較方便

大家有什么方法能够分享一下哦

oracle中REGEXP_SUBSTR方法的使用

标签:dcl   javascrip   位置   问题:   and   this   length   问题   相同

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:http://www.cnblogs.com/mfmdaoyou/p/7098276.html

 类似资料: