当前位置:  开发笔记 > 编程语言 > 正文

如何从Oracle中的表中获取列名?

如何解决《如何从Oracle中的表中获取列名?》经验,为你挑选了7个好方法。

我需要查询数据库以获取列名,而不是与表中的数据混淆.举例来说,如果我有一个名为表中EVENT_LOG包含eventID,eventType,eventDesc,和eventTime,然后我会想检索查询,并没有其他的字段名.

我找到了如何做到这一点:

Microsoft SQL Server

MySQL的

PostgreSQL的

但我需要知道:如何在Oracle中完成这项工作?



1> baretta..:

您可以在USER_TAB_COLUMNS表中查询表列元数据.

SELECT table_name, column_name, data_type, data_length
FROM USER_TAB_COLUMNS
WHERE table_name = 'MYTABLE'


请注意,这是Oracle特有的.
如果您没有"选择任何行",那么您可以尝试将"USER_TAB_COLUMNS"更改为"all_tab_columns".为了100%肯定结果,你可以speficy所有者.
是否有任何理由可以返回"没有选择行"?(在Oracle中.)
如果要按照在表中创建的顺序检索它们,可以添加"按列列出ORDER".以下是表https://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2094.htm#I1020277中的其他相关列数据

2> Eppz..:

在SQL Server中......

SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = (SELECT id FROM sysobjects WHERE type = 'V' AND [Name] = 'Your table name')

类型='V'表示视图Type ='U'表



3> Sergey Golov..:

你可以这样做:

describe EVENT_LOG

要么

desc EVENT_LOG

注意:仅在您知道表名且特别是Oracle时才适用.



4> Jom..:

对于SQL Server 2008,我们可以使用information_schema.columns来获取列信息

SELECT *
FROM   information_schema.columns
WHERE  table_name = 'Table_Name'
ORDER  BY ordinal_position  



5> shieldstroy..:

对于SQLite,我相信你可以使用如下内容:

PRAGMA table_info(table-name);

来自sqlite.org的解释:

该pragma为命名表中的每列返回一行.结果集中的列包括列名,数据类型,列是否可以为NULL以及列的默认值.对于不属于主键的列,结果集中的"pk"列为零,并且是主键中作为主键一部分的列的列的索引.

另请参见:Sqlite.org Pragma表信息


它可能被低估了,因为问题标记为Oracle.
我已经删除了Oracle标签并对此进行了支持 - 我认为,由于答案太多,这个问题作为一般问题更有效.(我来这里寻找mySQL之一.)

6> Jon Ericson..:

该信息存储在ALL_TAB_COLUMNS系统表中:

SQL> select column_name from all_tab_columns where table_name = 'DUAL';

DUMMY

或者DESCRIBE,如果您使用的是SQL*PLUS,那么您可以使用该表:

SQL> desc dual
Name                               Null?    Type
----------------------------------------------------- -------- ---------------------- -------------
DUMMY                               VARCHAR2(1)



7> Sasha..:

其他答案足以回答这个问题,但我想我会分享一些额外的信息.其他人描述"DESCRIBE表"语法以获取表信息.如果您想以相同的格式获取信息,但不使用DESCRIBE,您可以:

SELECT column_name as COLUMN_NAME, nullable || '       ' as BE_NULL,
  SUBSTR(data_type || '(' || data_length || ')', 0, 10) as TYPE
 FROM all_tab_columns WHERE table_name = 'TABLENAME';

可能并不重要,但我早些时候写了它似乎很合适.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有