当前位置: 首页 > 面试题库 >

Oracle-比较列的默认值

越学义
2023-03-14
问题内容

我试图识别具有默认值NULL或未设置默认值的数据库列。为此,我正在执行查询。

SELECT T.TABLE_NAME,CL.COLUMN_NAME,CL.DATA_DEFAULT

    FROM   SYS.USER_TABLES T
               JOIN SYS.USER_TAB_COLUMNS CL ON T.TABLE_NAME = CL.TABLE_NAME

    WHERE  CL.DATA_DEFAULT IS NULL

    ORDER  BY t.table_name

在此查询的输出中,我正在获取未设置默认值(空)的列,但是我没有在获取默认值是NULL的列


问题答案:

oracle中(至少11g),如果您不为列提供默认值,就好比给它null

看这个例子

更新 感谢@pratik garg的评论,现在我了解到您所要求的是一种查询long列的方法。
由于如@PratikGrag所述,当您定义defualt nullLONG列时DATA_DEFAULT将包含’null’。

由于USER_TAB_COLUMNS没有可用的ROWID,因此我想到的唯一方法是使用PLSQL。

像这样的东西:

BEGIN
FOR rec IN (SELECT T.TABLE_NAME,CL.COLUMN_NAME,CL.DATA_DEFAULT
    FROM   SYS.USER_TABLES T
               JOIN SYS.USER_TAB_COLUMNS CL ON T.TABLE_NAME = CL.TABLE_NAME
   ORDER  BY t.table_name) LOOP

  IF rec.DATA_DEFAULT = 'null' THEN
    dbms_output.put_line(rec.table_name || ' ' || rec.COLUMN_NAME);
  END IF;
END LOOP;
END;


 类似资料:
  • 问题内容: 在Python 2.7中,我定义了一个空的新类: 然后创建新类的实例列表: 然后尝试对列表进行排序: 令人惊讶的是,即使我还没有定义一种比较以下实例的方法,该类也不会抱怨: 那里到底发生了 什么?这种行为的理由是什么(可能令人惊讶)? 问题答案: 我认为唯一的理由是可以方便地对对象进行排序,例如将其用作具有某些默认行为的字典键。语言定义中的相关章节位于:https : //docs.p

  • 我有一个表CategoryColours,如果没有找到一个类别,它应该返回默认类别“*”的颜色。 表包含以下行时的示例: 如果我搜索类别“1”,查询应该得到4种颜色。 如果我搜索类别“2”,它在表中没有记录,那么查询应该从类别“*”中获得2种颜色。 它不是我代码的障碍,因为我可以先检查我的类别是否有记录,或者选择我的类别+默认值,然后在其他类别有记录时删除默认值。

  • 问题内容: 请有人帮忙…为什么查询不起作用.. ?? 问题答案: 在Oracle中,一个总有一个时间成分。您的客户端可能显示也可能不显示时间分量,但是当您尝试进行相等比较时,它仍然存在。您还总是希望将日期与日期而不是字符串进行比较,后者使用当前会话进行隐式转换,从而使它们相当脆弱。THat将涉及ANSI日期文字或显式调用 您可以使用该函数将截断到午夜 或者,您可以进行范围比较(如果您可以受益于的索

  • 问题内容: 我需要查询表中给定字符串的值。该表区分大小写,但我想在比较中执行ToLower()。 假设我有一个包含以下数据的类表。 我的查询应该是这样的 这是进行比较的最佳方法吗? 更新 我无法控制数据库或数据。我是只读用户。 问题答案: 不; 最好改善数据:创建一个数字ID,以表示这些看似毫无意义的类变体(可能还有一个相关的查找表来获取ID)。使用where子句中的ID列,您应该找到一个索引数字

  • 第一次使用Oracle SQL(我习惯使用MySQL)。我发现关于默认日期格式的信息有冲突。在多次尝试使用INSERT IN my\u table语句的to\u DATE之后,我终于找到了我正在使用的数据库expects DD-MON-YY(即2018年1月25日)。然而,在stackoverflow和其他地方的不同页面上,我看到一些人说默认值是YYYYMMDD或DD/MM/YYYY或YYYY-M

  • 问题内容: 是否有内置的可能性在Java 8中创建空安全的映射比较器而无需编写自己的实现? 运行以下代码时,它会导致NPE,因为的参数可能返回值: java.util.Comparator.lambda $ comparing $ 77a9974f $ 1(Comparator.java:469)处的线程“ main”中的java.lang.NullPointerException,java.ut