Sql 是否可以先描述一个表并显示NOTNULL列?
我不能使用ORDER BY和DESC,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命令执行此操作,但可以将自己的查询作为生成,
还有其他方法吗?是的,您可以,只需查询
如果您只需要列列表,可以使用_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