【问题标题】:Find out the default value for a column (Oracle)找出列的默认值 (Oracle)
【发布时间】:2013-01-06 20:42:47
【问题描述】:

我想知道是否有一种方法可以通过简单的 select 语句找出某些列的默认值。尝试了几件事,例如:

SELECT * FROM all_tab_columns WHERE table_name = 'tablename'

但我看不到那里的列的默认值。不,我不想使用 SQL Plus 之类的东西,我需要一个 SELECT,猜有一些表提供该信息?

【问题讨论】:

  • 默认值存储在all_tab_columnsDATA_DEFFAULT 列中(记录在案:docs.oracle.com/cd/E11882_01/server.112/e25513/…
  • 很好的回答。我对 stackoverflow 还很陌生,为什么要将其添加为评论而不是答案?
  • 该列表示所有列的 而实际上这些列都有一个默认表达式,如 0、'HOST'、'-'、3000、SYSDATE 等。我可以在我的 PL 中看到它们/SQL Developer,但 SELECT 对我没有任何帮助。
  • 那么 PL/SQL Developer 无法处理该数据类型。您应该找到更好的 SQL 客户端。我只是将其添加为评论,因为如果您费心看手册,这是一个显而易见的答案。顺便说一句:SQLPLus *would 能够显示这一点。
  • 这里是一个例子:sqlfiddle.com/#!4/93fb0/1

标签: sql oracle select default


【解决方案1】:

试试下面的查询

Select * From USER_TAB_COLUMNS where TABLE_NAME ='Table Name'

【讨论】:

    【解决方案2】:
    Select TABLE_NAME, COLUMN_NAME, DATA_DEFAULT
    from DBA_TAB_COLUMNS
    where TABLE_NAME = 'TABLE_NAME';
    

    替换您要查看其默认列数据的 Table_Name。

    【讨论】:

    • 最好使用like 而不是=,因为Select TABLE_NAME, COLUMN_NAME, DATA_DEFAULT from DBA_TAB_COLUMNS where TABLE_NAME like '%GI_LOCATION%'; 更有可能得到结果。
    • @korefn,不,如果您不知道表名是什么,您可以使用 LIKE;否则,= 是合适的。
    【解决方案3】:

    默认值位于 ALL_TAB_COLUMNS 的 DATA_DEFAULT 列中:

    SELECT TABLE_NAME, COLUMN_NAME, DATA_DEFAULT 
      FROM ALL_TAB_COLUMNS
     WHERE TABLE_NAME = 'tablename'
    

    [2021-01-26] 编辑: 请注意,'tablename' 参数必须与真实表名的大小写匹配,因为它出现在 ALL_TAB_COLUMNS 上。更多时候它是大写的,所以使用UPPER() 函数来确保它可能很有用。

     WHERE TABLE_NAME = UPPER('tablename')
    

    【讨论】:

    • 当我按照另一个答案中的建议从 DBA_TAB_COLUMNS 中选择时,我得到“表或视图不存在”。我想这要么与我的权限有关,要么与 Oracle 的版本有关。无论如何,从 ALL_TAB_COLUMNS 中选择对我有用。
    • 在添加 Upper('tablename') 之前,这对我不起作用。可能特定于我的数据库表命名全部大写
    • @phenderbender,你是对的! 'tablename' 必须与真实表名匹配大小写。我在我的 sn-p 中使用了小写字母来匹配问题中使用的名称。
    【解决方案4】:

    上面的例子都不适合我,但这个例子对我有用。关键部分是 table_name 的“上部”。也许特定于我团队的数据库,但如果你遇到困难,这应该可以

    SELECT a.column_name "Column",
           a.data_default "Default"
    FROM   all_tab_columns a
    WHERE  a.table_name = Upper('tablename')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      相关资源
      最近更新 更多