查询某个表所有包含某字符的字段名

y99859 2016-01-23 01:24:29
大家好,
比如我的表如下(有A,B,C三个字段):
A B C
1 hello ke
2 mell go
3 he will

我想写个语句查询包含ell的所有字段名,希望得到的结果应该是:B
谢谢。
...全文
452 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkzhong 2016-03-29
  • 打赏
  • 举报
回复
写存储过程,入参数表名,根据表名找到每个字段,判断是不是字符型,是则判断是否包含ell。包含则返回该字段名称。
xiaoheixiaobai 2016-03-29
  • 打赏
  • 举报
回复
表确定,列名也都确定了,楼主如果表的字段少的话,每列拼着取呗,不用搞那么复杂吧 SELECT DISTINCT 'CD1' AS COLUM FROM TEST2 T WHERE T.CD1 LIKE '%ELL%' UNION ALL SELECT DISTINCT 'YMD' AS COLUM FROM TEST2 T WHERE T.YMD LIKE '%ELL%' UNION ALL SELECT DISTINCT 'KBN' AS COLUM FROM TEST2 T WHERE T.KBN LIKE '%ELL%' 。。。。。。。;
bo871747022 2016-03-28
  • 打赏
  • 举报
回复
这估计要查数据库字典表,得到要查询的表的所有字段,然后遍历这些字段,一个一个select吧。
寡丶人 2016-03-27
  • 打赏
  • 举报
回复
declare
num number;
begin
  for A IN (select COLUMN_NAME
              from user_tab_columns
             where table_name = 'TEST'
               and data_type <> 'CLOB'
               and data_type <> 'BLOB') LOOP
               --dbms_output.put_line(A.COLUMN_NAME);
    for B in (select count(*) as  num
                from TEST
               where A.COLUMN_NAME like '%ell%') loop
      IF  B.NUM>0  THEN 
      dbms_output.put_line(A.COLUMN_NAME);
      END IF;
    end loop;
  end loop;
end;
Miracle_lucy 2016-01-25
  • 打赏
  • 举报
回复
为什么会有这么奇怪的需求 什么场景下要这样用
kingkingzhu 2016-01-25
  • 打赏
  • 举报
回复
吐血的需求 declare cursor c_sur is select table_name, column_name from user_tab_columns where table_name = 'AA'; c_row c_sur%rowtype; s_sql varchar2(200); s_part varchar2(200); l_count number; begin s_part := 'xx'; open c_sur; loop fetch c_sur into c_row; exit when c_sur%notfound; s_sql := 'select count(1) from ' || c_row.table_name || ' where ' || c_row.column_name || ' like ''%' || s_part || '%'''; execute immediate s_sql into l_count; if l_count > 0 then dbms_output.put_line(s_sql); end if; end loop; close c_sur; end;
y99859 2016-01-25
  • 打赏
  • 举报
回复
大概的场景就是:我看到报表里面有一个数据,但是由于是别人开发的,看不到代码,不知道他来自于哪个字段。于是想通过值反查来自于哪个字段。 期待大侠解答。。。。
y99859 2016-01-24
  • 打赏
  • 举报
回复
求高手出现。。。。
zbdzjx 2016-01-23
  • 打赏
  • 举报
回复
估计是要写一个存储过程,先读全部的表,再读每个表的全部列,再判断列的类型,如果是varchar2类型的,再判断这列中是否有这个字符串,全部循环完后,输出结果。
qyh22684094 2016-01-23
  • 打赏
  • 举报
回复
需求没有说清楚
z123zjf 2016-01-23
  • 打赏
  • 举报
回复
感觉这需求太惊人了 按我的理解这是要查整个数据库的数据啊
ORAClE SE 2016-01-23
  • 打赏
  • 举报
回复
估计是要写一个存储过程,先读全部的表,再读每个表的全部列,再判断列的类型,如果是varchar2类型的,再判断这列中是否有这个字符串,全部循环完后,输出结果。
y99859 2016-01-23
  • 打赏
  • 举报
回复
不好意思,有地方没有说清楚,不补充一下。 不需要便利整个数据库,只要便利指定的表即可。也就是说我查找的范围是某一个特定的表。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧