首页 > 解决方案 > Create Table as Select 正在更改某些数据类型

问题描述

我正在通过从另一个表中选择来创建一个表。我的理解是,通过这样做,创建的列应该与原始源具有相同的数据类型。这不是几个专栏的情况,它让我发疯。特别是两列。一个是 Varchar2(4),另一个是 Varchar2(1),但在创建的表中它们都变成了 Varchar2(100)。有没有应该发生这种情况的情况?

我的选择查询相当复杂,因为有 20 个联合,但它们都来自同一个表。还有 28 列,所以我宁愿做这项工作,也不愿创建表并分两步填充它。

工会会搞砸这种脚本吗?

标签: sqloracleunioncreate-tablesqldatatypes

解决方案


我了解一步创建和填写表格的偏好。除了现在更容易,如果有任何修改也会更容易。但是,在某些时候,您可能会认为您要花费更多时间来尝试解决此问题,然后才需要编写 create table 语句。(您可以让数据库从现有版本中为您完成)。

至于为什么这样做,我建议您的一个工会将 concat 或其他功能应用于该领域。如果您发现有问题的列,那么您可以强制转换它以确保按照您的意图看到表格。

如果您找不到 20 个 select 语句中的哪一个是有问题的,则删除一半,看看它是否按照您想要的方式创建列。然后继续将联合分成两半,直到您确定导致这种情况的 select 语句。注意:它可能不止一个。


推荐阅读