oracle 字符串匹配查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 字符串匹配查询相关的知识,希望对你有一定的参考价值。
table T1
str
a,b,c
a,b,d
a,d,c
现在要查询表中的str字段,有那些数据包含了字符串a,c中任何一个字母的
这个SQL怎么写,数据库 oralce 11g
a,c是一个字符串!!,作为查询条件的参数的,不能拆开这个字符串
oracle中的函数regexp_like,很好用的哦,其中[ac]为正则表达式,意思是,在str字段的数据里,匹配有包含a或者c的数据。具体请在网上查询oracle数据库中regexp_like函数的应用,希望能帮助你。追问
查询结果不够精确,因为如果是字符串是a01,c02,就会查到不匹配的数据,后面的正则式该怎么写
追答这是可以的啊,[ac]正则表达式的意思是,在所有的字符串中找到包含有a或者c的的字符串,如果字符串中有大写的那么就改成[aAcC]就可以了。
参考技术A 简单点就是这样:select str from t1 where instr(str,'a')>0 or instr(str,'c')>0 or instr(str,',')>0) ;
或者使用正则表达式
select str from t1 where regexp_like(t.str,'[a,c]'); 参考技术B select * from T1 where ','||str||',' like '%,a,%' or ','||str||',' like '%,c,%' 参考技术C select * from t1 where str like'%a%' or str like'%c%' 参考技术D select * from T1 where str like %a,c%;
oracle 中查询的模糊匹配
现在有一个表A如下
id value_a
1 1000
2 1001
3 1002
select value_a from A返回3条记录
现在有表B如下:
id value_B
1 10001
2 10011
3 20003
我想通过子查询 查询类似 select * from B where B.value_B like '1000%' or B.value_B like '1001%' 的结果
但select * from B where B.value_B in (select value_a from A)或者
select * from B where B.value_B like (select value_a from A)这样是不行的,
有什么方法可以得出我想要的查询?
FROM B
INNER JOIN A
ON LEFT(B.value_B,4) = A.value_a
以上是关于oracle 字符串匹配查询的主要内容,如果未能解决你的问题,请参考以下文章
oracle10g中,如何查询正则表达式匹配指定字符串的匹配个数?