现在只知道客户端用户存了一个"东风乘用车"的字符串到数据库的
某张表的某个字段了,具体是哪张表那个字段都不清楚,有没有人能写一条语句
查询出是存在哪个表,哪个字段?

解决方案 »

  1.   

    1个sql有难度啊,,用pl/sql 倒是挺容易的
      

  2.   

    从dba_tab_columns 里面循环 取字段 ,用动态sql 查下判断即可啊。。表多字段多的话,估计要花点时间。。
      

  3.   

    这需求有点特殊啊~  
    表少的话 可以穷举试探嘛~
    1,从dba_tables里查询出所有表;
    2,从DBA_COL_COMMENTS里查询出该表的字段;
    3,关联起来循环试探;
      

  4.   

    仅提供思路,希望能帮助你!
    1先创建表
    create table aaa as select a.table_name,b.columns from all_tables a,all_tab_columns b
    2、定义游标获得表名和列名
    cursor vv_sql1 = select table_name from aaa;
    cursor vv_sql2 = select colum_name from aaa;
    vv_sql3 rowtype%aaa;
    3、 通过遍历游标vv_sql1获得表中的数据
    for vv_sql3.table_name in vv_sql1
    4、嵌套遍历vv_sql2,看是否有数据等于‘东风乘用车‘
    for vv_sql3.column in vv_sql2
    5、存在则返回 vv_sql1、vv_sql2
                
        
      

  5.   

    从user_tab_columns得到table_name表名称,然后从COLUMN_NAME得到字段名,然后从字段中找你需要的字符串。楼上很多人说了效率低,我也觉得是。不过把user_tab_columns中字段的类型DATA_TYPE筛选掉一些应该能快点吧。楼主自己看着办吧
      

  6.   

    可以的,使用如下一条语句即可.SQL> select sql_text from v$sqlarea where sql_text like '%东风乘用车%';SQL_TEXT
    --------------------------------------------------------------------------------
    insert into test values(1,'东风乘用车')
    select sql_text from v$sqlarea where sql_text like '%东风乘用车%'