sql - 如何在 SELECT INTO 之后保留数据类型?

标签 sql ms-access

我有一个包含一些日期/时间字段的表 T1。我已将此表上的几个查询与 UNION 查询组合在一起,并使用联合上的 SELECT INTO 创建了一个新表 T2,如下所示:

SELECT * INTO T2
FROM (select * from query1_T1
union
select * from query2_T1)

问题是 query1_T1 将一些日期字段替换为空白字符串常量,这导致 T2 具有文本字段而不是日期/时间字段。举例说明:

query1_T1:
select myUDF(someTextField),"" as newDateField from T1

query2_T1:
select anotherUDF(someTextField),oldDateField from T1

其中 oldDateField 是日期/时间。

有没有一种方法可以构建 SELECT INTO 或更改 query1_T1,这样我仍然可以从查询中获得相同的结果,但 newDateField 将结束作为日期/时间?

最佳答案

您始终可以单独创建表而不向其中添加数据。首先,使用适当的数据类型定义所有字段。然后使用 INSERT INTO (columns) SELECT * FROM 来填充它。

更新:

或者您可以采用混合方法。首先执行SELECT INTO完全没有行:

SELECT * INTO T2
FROM query2_T1
WHERE 1=0

这将创建您的大部分结构。然后您可以手动调整任何未正确通过的数据类型。

适当调整结构后,您可以安全地执行此操作:

INSERT INTO T2 
SELECT * FROM query1_T1
UNION 
SELECT * FROM query2_T1

关于sql - 如何在 SELECT INTO 之后保留数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16343451/

相关文章:

sql - 连接2个表并计算SQL中特定字段的出现次数

c# - 处理大型数据库的最佳方式?

database - 使用 VB.Net 中的文本框和搜索按钮在数据库中查找记录

sql - 如何使用 MAX() 在 SQL 中多次出现 Max 值

sql - 动态插入 -- ORA-00923 : FROM keyword not found where expected

sql - 如何创建最多包含 5 个时间相关成员的每个分区的平均值?

ms-access - MS Access 通过依赖于表单值

vba - 如何在查询中使用多个复选框值

vba - 在 VBA 中遍历对象浏览器

mysql - SQL:如何使用分组依据或类似方式进行选择,以及如何在新列中获取被忽略的值?