Sql 是否可以先描述一个表并显示NOTNULL列?

Sql 是否可以先描述一个表并显示NOTNULL列?,sql,oracle,Sql,Oracle,我不能使用ORDER BY和DESC, 还有其他方法吗?是的,您可以,只需查询 如果您只需要列列表,可以使用_TAB_COLS视图并按NULLABLE排序: select table_name, column_name, data_type, nullable from user_tab_cols where table_name = 'MYTABLE' order by nullable, column_name; 不能使用内置的descripe命令执行此操作,但可以将自己的查询作为生成,

我不能使用ORDER BY和DESC,
还有其他方法吗?

是的,您可以,只需查询


如果您只需要列列表,可以使用_TAB_COLS视图并按NULLABLE排序:

select table_name, column_name, data_type, nullable 
from user_tab_cols
where table_name = 'MYTABLE'
order by nullable, column_name;

不能使用内置的descripe命令执行此操作,但可以将自己的查询作为生成,但可以在order by子句中包含nullable标志:

select column_name as "Column",
  case when nullable = 'N' then 'NOT NULL' end as "Null?",
  cast (data_type || case 
    when data_type in ('VARCHAR2', 'CHAR', 'TIMESTAMP')
      then '(' || data_length || ')'
    when data_type in ('NUMBER')
        and (data_precision is not null or data_scale is not null)
      then '(' || data_precision || case
        when data_scale > 0 then ',' || data_scale
      end || ')'
    end as varchar2(30)) as "Type"
  from user_tab_columns
 where table_name = 'YOUR_TABLE'
 order by nullable, column_id;
使用以下工具创建的表:

create table t42 (id number primary key, col1 varchar2(10),
  col2 number(10,3) not null, col3 date);
该查询将为您提供:

Column                         Null?    Type                         
------------------------------ -------- ------------------------------
ID                             NOT NULL NUMBER                        
COL2                           NOT NULL NUMBER(10,3)                  
COL1                                    VARCHAR2(10)                  
COL3                                    DATE                          

如果你想经常使用它,你可以把它变成一个流水线函数,你可以把一个表名传递给它。不过,这不会解析同义词或描述存储程序。

只是为您澄清一下,因为您似乎不清楚这一点:DESC不是一个SQL命令-它是由Oracle作为SQL*Plus的一部分或您使用的任何Oracle实用程序提供的。这就是为什么没有订单的原因。它有自己的语法,您可以找到,例如。

您的意思是选择表内容,然后首先获取NULL?由某物订购。。。
Column                         Null?    Type                         
------------------------------ -------- ------------------------------
ID                             NOT NULL NUMBER                        
COL2                           NOT NULL NUMBER(10,3)                  
COL1                                    VARCHAR2(10)                  
COL3                                    DATE