【问题标题】:Oracle - How do I add a column and set the datatypeOracle - 如何添加列并设置数据类型
【发布时间】:2013-05-10 19:52:25
【问题描述】:

我对此不太走运。我正在创建一个新表并添加具有默认值的列 - 该表将列数据类型默认为 CHAR 7,但最后一列需要为 CHAR 30。

到目前为止,我只能在创建后修改表,但必须有一种方法可以一步完成。

CREATE TABLE table1 parallel 8 NOLOGGING AS
SELECT
  t2.1,
  t2.2,
  t2.3,
  'N' AS Store,
  'N' AS Address,
  'N' AS Owner,
  'N' AS User,
  'N' AS Business,
  'Unknown' AS Source
FROM t2

最后一列(来源)值超过 7 个字符,但所有其他值均为 Y/N。我的第一个想法是做 'Unknown' AS Source (char 30),但我继续得到 ORA-00923

任何帮助将不胜感激。

【问题讨论】:

    标签: oracle types


    【解决方案1】:

    如果它需要是一个 CHAR(30),你应该确保它是。用空格填充它不一定是正确的方法。最好使用CAST() 函数告诉数据库您希望它是什么,该函数在数据类型之间进行转换:

    cast('Unknown' as char(30)) as source
    

    【讨论】:

    • 这与@Sebas 不太一样,但是是的;从来没有需要使用 CHAR 字段...
    • 这是正确的答案,但使用 CHAR 是一个糟糕的解决方案。对 CAST() 或 RPAD() 的持续需求对开发人员和用户来说是一种严重的消耗。
    猜你喜欢
    • 1970-01-01
    • 2012-05-30
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    相关资源
    最近更新 更多