oracle中一个字符串包含另一个字符串中的所有字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中一个字符串包含另一个字符串中的所有字符相关的知识,希望对你有一定的参考价值。
我要查询出一个数据表中符合下列条件的记录:
有一个数据表中两个字段A和B,都是字符型
查询A字符串中包含B字符串中所有的字符 的记录
例如: A字段值为abcd ,B字段值为bc或者ac 或者bd或者acd等都可,B中不能含有A中不存在的字符。
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
参考技术A 这要看你要在那里做处理了,如果在数据库中直接做处理 循环控制 你就可以用 loop做个过程处理(PL/SQL) select substr('A123456',2,6) from dual
如此截取
要是在JAVA中做处理的话 就用for循环控制 。charat()这个方法可以用哦
思路是这 下面靠自己动手啦! 多写写就会了
还有循环的时候有个简单点的 就是把两个字符串的每个字符都进行排序了 然后看是不子串 参考技术B SELECT * FROM 表
WHERE A LIKE '%'||B||'%' 参考技术C 一条sql很难实现,要写对应的函数 参考技术D where a like '%'||b||'%' and b not like '%'||a||'%'
从另一个表中选择一个表的否定以及oracle的主表sql查询中的数据
【中文标题】从另一个表中选择一个表的否定以及oracle的主表sql查询中的数据【英文标题】:Select Negation of one table from another along with data in master table sql query for oracle 【发布时间】:2018-05-15 12:25:57 【问题描述】:我遇到了一个问题。我的 oracle 数据库中有 3 个表。 第一个表包含所有注册员工:ID、FNAME、LNAME 第二个表包含所有员工(已注册 + 未注册):- ID、FNAME、LNAME 第三个表是一个主表,其中包含员工的所有详细信息以及地址。 ID 在所有 3 个表中都是通用的。
这里我的要求是编写一个查询,它将显示所有未注册的员工及其地址详细信息。
在所有必须忽略的表中,一些 ID 也为空。
表 1 - 注册用户 表 2 - 已注册+未注册 表 3 - 包含附加信息的主表
要求:- 为未注册用户选择 ID、姓名、地址。
查询将比解释更有帮助。
谢谢,
【问题讨论】:
提示:左连接或不存在。 嗨,Raymond,请您检查一下需求,如果可能的话,请让我知道这个问题。谢谢。 【参考方案1】:我认为 not exists
或 not in
可以满足您的需求:
select m.*
from masters m
where not exists (select 1
from registered r
where r.id = m.id
);
【讨论】:
好的,我的要求是选择所有未注册的员工。 AllEmployeeTable(Registered+Unregisterd) 减去 RegisterdUser。这会给我所有未注册的用户。现在对于所有未注册的用户,我必须从第三张表中选择地址。以上是关于oracle中一个字符串包含另一个字符串中的所有字符的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 查找包含另一个字符串的所有字符的字符串中的最小窗口
如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串?