oracle判断一个字符串中是否包含另外一个字符串
2015-11-30 00:00
661 查看
摘要: oracle判断一个字符串中是否包含另外一个字符串
select * from a where instr(a,b)>0;用于实现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
select * from a where instr(a,b)>0;用于实现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
相关文章推荐
- 如何在oracle 12c中创建普通用户
- 增加字段oracle
- Oracle11gR2 单机环境 GI PSU补丁安装
- oracle事务隔离机制
- java 解决oracle US7ASCII编码,sql查询时
- oracle技巧
- Oracle基础
- Oracle查找排序,模糊查询,外连接
- Oracle查找排序,模糊查询,外连接
- oracle 11gPL/SQL语言基础
- oracle的数据字典
- Using Process Memory Matrix script for understanding Oracle process memory usage
- Oracle 创建和使用视图
- oracle常用命令记录
- Oracle Memory Troubleshooting, Part 4: Drilling down into PGA memory usage with V$PROCESS_MEMORY_DET
- oracle 创建表空间用户
- oracle 11g概要文件
- oracle 11g角色管理
- oracle 11g创建与管理用户
- oracle v$ 视图查询慢处理