大神们,oracle查询的时候,如果字段有80列,但是只需要查其中的七十五列,又不想把这七十五列,一列一列的写,有没有什么好的办法?

解决方案 »

  1.   

    把这 75 列写到视图,下次就直接 select * from v 
      

  2.   

    select (select column_name from dba_tab_columns where table_name=t1 and column_name not in(你不要的字段)) from t1 
    改成动态SQL 就可以了
      

  3.   

    select wm_concat(column_name) from user_tab_cols where table_name='A1'
    把字段拼出来,然后删掉你不要的。
    如果这个查询用的很频繁,用1楼的方法,创建对应的视图
      

  4.   

    用的plsql么,很简单,把该表下字段的文件夹拖到sql里就OK,结帖吧。
      

  5.   

    试下这个DECLARE
    V_SQL VARCHAR(200);
    BEGIN
    SELECT LISTAGG(COLUMN_NAME,',') WITHIN GROUP (ORDER BY COLUMN_ID)  INTO V_SQL FROM DBA_TAB_COLUMNS WHERE TABLE_NAME='T2' AND COLUMN_NAME NOT IN('NAME');
    V_SQL:='SELECT '|| V_SQL || ' FROM  T2 ';
    DBMS_OUTPUT.PUT_LINE(V_SQL);
    --EXECUTE IMMEDIATE V_SQL;
    END;