oracle中一个字符串包含另一个字符串中的所有字符

我要查询出一个数据表中符合下列条件的记录:有一个数据表中两个字段A和B,都是字符型查询A字符串中包含B字符串中所有的字符的记录例如:A字段值为abcd,B字段值为bc或者... 我要查询出一个数据表中符合下列条件的记录:
有一个数据表中两个字段A和B,都是字符型
查询A字符串中包含B字符串中所有的字符 的记录
例如: A字段值为abcd ,B字段值为bc或者ac 或者bd或者acd等都可,B中不能含有A中不存在的字符。
展开
 我来答
heganglaoda
推荐于2017-09-16 · TA获得超过204个赞
知道小有建树答主
回答量:179
采纳率:100%
帮助的人:170万
展开全部

select * from a where instr(a,b)>0;

这个只能实现B字段是A字段中的某一部分的时候,

如果想要不论顺序或者不相邻的字符时,定义函数可以实现

 create or replace function checks(v_a varchar2,v_b varchar)

 return number

 as

    num number;

    cou number;

 begin

    num := -1;

    cou:=0;

    for i in 1..length(v_b) loop

       if instr(v_a,substr(v_b,i,1))>0 then

    cou:=cou+1;

       end if;

    end loop;

    if cou=length(v_b) then

    return cou;

    end if;

    dbms_output.put_line(cou||'    '||length(v_b));

 return num;

 end;

结果:

SQL> select * from a;

A          B

---------- ----------

asdf       sd

asdf       ad

asdf       df

asdf       asdf

SQL> select * from a where checks(a,b)>0;

A          B

---------- ----------

asdf       sd

asdf       ad

asdf       df

asdf       asdf

gegecuicui
2011-09-06 · TA获得超过616个赞
知道小有建树答主
回答量:802
采纳率:0%
帮助的人:494万
展开全部
这要看你要在那里做处理了,如果在数据库中直接做处理 循环控制 你就可以用 loop
做个过程处理(PL/SQL) select substr('A123456',2,6) from dual
如此截取
要是在JAVA中做处理的话 就用for循环控制 。charat()这个方法可以用哦
思路是这 下面靠自己动手啦! 多写写就会了

还有循环的时候有个简单点的 就是把两个字符串的每个字符都进行排序了 然后看是不子串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ssanitxu
2011-09-06 · TA获得超过325个赞
知道小有建树答主
回答量:333
采纳率:0%
帮助的人:183万
展开全部
SELECT * FROM 表
WHERE A LIKE '%'||B||'%'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-09-06
展开全部
一条sql很难实现,要写对应的函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiDirac
2011-09-06 · TA获得超过6784个赞
知道大有可为答主
回答量:8833
采纳率:33%
帮助的人:1亿
展开全部
where a like '%'||b||'%' and b not like '%'||a||'%'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式