查看: 4491|回复: 11

[讨论]正则表达式,查询字符串顺序倒置的话,怎样才能查询出结果。

[复制链接]
论坛徽章:
4
阿斯顿马丁
日期:2013-08-08 21:36:33优秀写手
日期:2014-03-12 06:00:132015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
发表于 2014-10-16 10:54 | 显示全部楼层 |阅读模式


--执行下面的,能匹配成功
with t as(select  '1,2,3,4' as col from dual)
select *From  t where regexp_like(col,'1,2');

with t as(select  '1,2,3,4' as col from dual)
select *From  t where regexp_like(col,'3,4');

结果:1,2,3,4



--执行下面的,匹配没成功,顺序倒置
with t as(select  '1,2,3,4' as col from dual)
select *From  t where regexp_like(col,'3,2');

认证徽章
论坛徽章:
8
宝马
日期:2013-12-30 15:12:362014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08青年奥林匹克运动会-击剑
日期:2014-08-26 08:46:14马上加薪
日期:2014-12-15 14:55:28马上加薪
日期:2015-01-30 09:13:41美羊羊
日期:2015-03-19 15:04:19水瓶座
日期:2016-01-28 10:23:13
发表于 2014-10-16 11:13 | 显示全部楼层
那就反转
  1. with t as(select  '1,2,3,4' as col from dual)
  2. select * From  t where regexp_like(col,REVERSE('3,2'));
复制代码

使用道具 举报

回复
论坛徽章:
4
阿斯顿马丁
日期:2013-08-08 21:36:33优秀写手
日期:2014-03-12 06:00:132015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
 楼主| 发表于 2014-10-16 11:26 | 显示全部楼层
如果col字段顺序不是从小到大,怎么处理?谢谢!

使用道具 举报

回复
求职 : 数据库管理员
认证徽章
论坛徽章:
11
ITPUB社区千里马徽章
日期:2013-06-09 10:15:34懒羊羊
日期:2015-03-04 14:52:11懒羊羊
日期:2015-02-10 13:36:05马上有对象
日期:2015-02-02 12:29:02红宝石
日期:2015-01-19 09:44:10马上有车
日期:2014-11-11 14:16:07马上有车
日期:2014-03-27 15:59:39优秀写手
日期:2014-03-12 06:00:13马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
发表于 2014-10-16 11:29 | 显示全部楼层
antipass 发表于 2014-10-16 11:26
如果col字段顺序不是从小到大,怎么处理?谢谢!

乱序?

使用道具 举报

回复
认证徽章
论坛徽章:
169
SQL数据库编程大师
日期:2016-01-13 10:30:43SQL极客
日期:2013-12-09 14:13:35SQL大赛参与纪念
日期:2013-12-06 14:03:45最佳人气徽章
日期:2015-03-19 09:44:03现任管理团队成员
日期:2015-08-26 02:10:00秀才
日期:2015-07-28 09:12:12举人
日期:2015-07-13 15:30:15进士
日期:2015-07-28 09:12:58探花
日期:2015-07-28 09:12:58榜眼
日期:2015-08-18 09:48:03
发表于 2014-10-16 11:30 | 显示全部楼层
antipass 发表于 2014-10-16 11:26
如果col字段顺序不是从小到大,怎么处理?谢谢!

不是从小到大也不影响反转

使用道具 举报

回复
论坛徽章:
4
阿斯顿马丁
日期:2013-08-08 21:36:33优秀写手
日期:2014-03-12 06:00:132015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
 楼主| 发表于 2014-10-16 11:30 | 显示全部楼层
嗯,不一定是"1,2,3,4"  有可能是 "4,3,1,2"

使用道具 举报

回复
论坛徽章:
5
优秀写手
日期:2013-12-18 09:29:09目光如炬
日期:2015-07-26 22:00:00目光如炬
日期:2015-07-26 22:00:00目光如炬
日期:2015-07-26 22:00:00目光如炬
日期:2015-07-26 22:00:00
发表于 2014-10-16 11:35 | 显示全部楼层
找找字符串函数

使用道具 举报

回复
认证徽章
论坛徽章:
8
宝马
日期:2013-12-30 15:12:362014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08青年奥林匹克运动会-击剑
日期:2014-08-26 08:46:14马上加薪
日期:2014-12-15 14:55:28马上加薪
日期:2015-01-30 09:13:41美羊羊
日期:2015-03-19 15:04:19水瓶座
日期:2016-01-28 10:23:13
发表于 2014-10-16 11:40 | 显示全部楼层
antipass 发表于 2014-10-16 11:30
嗯,不一定是"1,2,3,4"  有可能是 "4,3,1,2"

能说全吗?别这么抽象。

使用道具 举报

回复
论坛徽章:
4
阿斯顿马丁
日期:2013-08-08 21:36:33优秀写手
日期:2014-03-12 06:00:132015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39
 楼主| 发表于 2014-10-16 11:48 | 显示全部楼层
with t as(select  '1,2,3,4' as col from dual)
select * From  t where regexp_like(col,REVERSE('4,1'));  --查不出来了

使用道具 举报

回复
认证徽章
论坛徽章:
8
宝马
日期:2013-12-30 15:12:362014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08青年奥林匹克运动会-击剑
日期:2014-08-26 08:46:14马上加薪
日期:2014-12-15 14:55:28马上加薪
日期:2015-01-30 09:13:41美羊羊
日期:2015-03-19 15:04:19水瓶座
日期:2016-01-28 10:23:13
发表于 2014-10-16 11:55 | 显示全部楼层
那你是这个意思?
  1. with t as(select  '1,2,3,4' as col from dual)
  2. select * From  t where ltrim('4,3,5,1',col) is NULL;
  3. with t as(select  '1,2,3,4' as col from dual)
  4. select * From  t where ltrim('4,3,1',col) is NULL;
  5. with t as(select  '1,2,3,4' as col from dual)
  6. select * From  t where ltrim('4,3',col) is NULL;
复制代码

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表