如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串?
发布网友
发布时间:2022-04-08 01:41
我来回答
共5个回答
懂视网
时间:2022-04-08 06:03
部门326为部门329的父部门,部门2与部门326是同级部门;
账户muyunfei,属于329部门
消息发送给部门2及部门326两个部门(326|2),发送的部门对象之间用“|”分割
查询:muyunfei账户是否属于该部门字符串(329|2)或者该部门字符串的子部门中
1、首先使用start with。。。。。connect by获得账户muyunfei的部门及父部门
2、遍历部门及父部门,在循环体重嵌套循环(该循环拆分以“|”为分隔符的部门号),在嵌套的循环体中判断,两结果是否相同,相同,即人属于当前部门或其子部门,返回1结束循环,否则继续循环
create or replace function check_User_in_dept(to_party_id varchar2, --部门id,多个用|分割
cur_user_id varchar2 --人员id
) return varchar2 as
/*
功能:判断当前人是是否属于当前部门中
* 1当前人属于该部门,0不属于
*/
party_str varchar2(200);
v_length NUMBER := LENGTH(to_party_id);
v_start NUMBER := 1;
v_index NUMBER;
cursor c_1 is
select *
from wx_party a
start with a.party_id = (select b.department
from wx_contacts b
where b.user_id = cur_user_id)
connect by a.party_id = prior a.parent_id;
begin
/*检索游标数据*/
for v_1 in c_1 loop
/**根据‘|’拆分字符串,并匹配数据,如果存在然后1,否则继续循环*/
WHILE (v_start <= v_length) LOOP
v_index := INSTR(to_party_id, '|', v_start);
-- DBMS_OUTPUT.PUT_LINE('v_index:' || v_index);
IF v_index = 0 THEN
party_str := SUBSTR(to_party_id, v_start);
v_start := v_length + 1;
ELSE
party_str := SUBSTR(to_party_id, v_start, v_index - v_start);
v_start := v_index + 1;
END IF;
--DBMS_OUTPUT.PUT_LINE('party_str:' || party_str);
--DBMS_OUTPUT.PUT_LINE('party_id:' || v_1.party_id);
IF party_str = v_1.party_id then
return '1';
end if;
END LOOP;
/*重置循环条件*/
v_length := LENGTH(to_party_id);
v_start := 1;
end loop;
return '0';
end;
版权声明:本文为博主原创文章,未经博主允许不得转载。
oracle查询某人所在的部门(326)是否属于部门字符串(329|2)或者该部门字符串的子部门中
标签:
热心网友
时间:2022-04-08 03:11
这个不可能使用简单一个查询语句来实现这个功能。因为你的这个需要基本都是比一定逻辑的查询,实现起来有相当的难度。因为首先要确定有多少张表,每张表中有多少个字段,然后才能实现某个字段中的某条记录包含你所需要的这个特定的值。
这仅仅是一个简单的思路,供参考。
热心网友
时间:2022-04-08 04:29
你这个要求基本上用一两句t-sql语句无法实现。另外如果是大数据,基本上一查就死了,这个需求基本上属于无理取闹的。因为要实现你的要求,首先要在代码里面获取数据库都有哪些表,这些表都有哪些字段,然后在一个个字段去比较。想想让数据库来实现这些东西都头痛。
不知道全文搜索是不是有这个功能,反正想自己写几行代码就实现这个功能基本上无解。
热心网友
时间:2022-04-08 07:55
写一个存储过程
将show tables的结果放入一个集合中
然后遍历这个集合
desc table
得到单个表的字段
然后组织查询语句 select * from table where 字段1=‘cc’ or 字段2=’cc‘.......字段n='cc'
运行脚本看结果
这只是思路
热心网友
时间:2022-04-08 10:03
declare
cnt number;
sqls varchar2(400);
begin
for i in ( select table_name from user_tab_comments where comments is not null )
loop
for j in (select * from user_tab_columns where table_name = i.table_name )
loop
sqls :='select count(*) from '|| i.table_name
||' where ' || j.column_name || ' like ''.com%''' ;
execute immediate sqls into cnt;
if cnt >0 then
insert into test values( 'select ' || j.column_name || ' from ' ||i.table_name|| ';' ) ;commit;
end if;
end loop;
end loop;
end ;
如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串?
写一个存储过程\x0d\x0a将showtables的结果放入一个集合中\x0d\x0a然后遍历这个集合\x0d\x0adesctable\x0d\x0a得到单个表的字段\x0d\x0a然后组织查询语句select*fromtablewhere字段1=‘cc’or字段2=’cc‘...字段n='cc'\x0d\x0a\x0d\x0a运行脚本看结果\x0d\x0a这只是思路...
如何查询一个oracle数据库中所有表的所有字段哪个包含特定字符串?
这个不可能使用简单一个查询语句来实现这个功能。因为你的这个需要基本都是比一定逻辑的查询,实现起来有相当的难度。因为首先要确定有多少张表,每张表中有多少个字段,然后才能实现某个字段中的某条记录包含你所需要的这个特定的值。这仅仅是一个简单的思路,供参考。
oracle怎么查出字段中含有特殊字符的数据?表名:table,字段:col,请直接...
使用ESCAPE关键字定义了转义字符“M”,告诉DBMS将搜索字符串“%M%”中的第二个百分符(%)作为实际值,而不是通配符。当然,第一个百分符(%)仍然被看作是通配符,因此满足该查询条件的字符串为所有以%结尾的字符串。
oracle 如何查询所有的表中,有某个字符串的表?
create or replace function f_find_table return varchar2 is begin declare v_count int;begin select count(*) from tabA where instr(col1||col2||col3||col4||col5,'12345')>0 ;if v_count >0 then return "tabA";end if;...end ;end ;
Oracle 数据库如何查询列
● SELECT 列名1,列名2 FROM 表名; -> 查询某个表中所有的记录的字段1 字段2 ● SELECT distinct 列名 FROM 表名; ->去除重复记录 ● SELECT 表达式 FROM 表名; ->查询表达式 ● SELECT xxx as 别名 FROM 表名 表别名 ->使用别名 查询特定字段 代表通配符,能够查询表中所有字段 distinct去重...
查找oracle 数据库中包含某一字段的表名
将oracle所有的表unload出来,形成一组文本文件,然后利用文本搜索命令grep(Unix环境下),查找'xiaoming'字符串,然后找到对应的文件及所在行;你可以数一下该字符串在第几列;再对应找到该表的结构就能够找到列名了。
Oracle数据库查找含有某一字符串的记录
用模糊查询select * from 表where 字段1 like '%字符串%' or 字段2 like '%字符串%';
在oracle中 如何知道当前用户(比如scott) 的哪些表的哪些字段中包含某一...
EXECUTE IMMEDIATE V_RESULT_STRING INTO V_COUNT;IF V_COUNT > 0 THEN O_STRING := O_STRING || X.TABLE_NAME || '.' || X.COLUMN_NAME || ';';END IF;END LOOP;END;在plsql里面用测试方式执行这个存储过程,I_STRING 是你要查的字符串,O_STRING中显示的是结果,表名和字段名 ...
如何用oracle动态查询一张表里面的某些列?
字符串中可以包括用于参数绑定的占位符。但是,不可以使用绑定参数为动态SQL传递模式对象。在用于单行查询时,INTO子句要指明用于存放检索值的变量或记录。对于查询检索出来的每一个值,INTO子句中都必须有一个与之对应的、类型兼容的变量或字段。在用于DML操作时,RETURNING INTO子句要指明用于存放返回值的...
sql中如何判断字符串中含有特殊字符
1、打开终端窗口,输入mysql -u-root -p,进入mysql。2、SHOW DATABASES;用USE来切换数据库。3、SHOW TABLES;选择要进入查询的表格。4、SELECT * FROM car;这个是正常的查询表格指令。5、SELECT * FROM carWHERE car.make LIKE 'Ma%';这里就可以用这个指令来搜索make这一列以Ma打头的字符串有哪些...