数据库表的列类型转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库表的列类型转换相关的知识,希望对你有一定的参考价值。

有A、B2个数据库,都有一个表,表名,列名都相同,现在遇到一个问题,如果2个表的数据类型不相同,现在要更改B数据库中表的类型跟A数据库表的类型相同。同时ab数据库的数据都不能丢失 ,应该怎么做呢

首先你这个B数据库要修改的列必须没有数据才可以更改数据类型。如果你的这个列类型是不能为空的话,就要把它修改为可以为空。如果你用批量pl/sql 、toad等工具的话都比较方便,可以不用命令就能够更改了。
sql命令的话就是: alter table table_name modify 字段 varchar(12); --varchar(12)是你自己定义的,可以是date、number、long等类型。
其他的一些语句:
/*修改原字段名*/
ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1;
/*添加一个和原字段同名的字段*/
ALTER TABLE 表名 ADD 字段名 VARCHAR2(30);
/*将原来的数据更新到新字段中这是要注意,一定要显示进行数据类型转换(不同于MSSQL)*/
UPDATE 表名 SET 字段名 = CAST(字段名1 AS VARCHAR2(30));
/*删除原来的备份字段*/
ALTER TABLE 表名 DROP COLUMN 字段名1;追问

你发的是你的一种思路吗?感觉还可以哦,

追答

对啊,这下面的是一种思路。

参考技术A 利用数据的导出 导入实现 把ACCESS作为中间数据库

在 R 中使用 SQLsave 创建的表的列的数据类型是啥

【中文标题】在 R 中使用 SQLsave 创建的表的列的数据类型是啥【英文标题】:what is the datatype of columns of a table created using SQLsave in R在 R 中使用 SQLsave 创建的表的列的数据类型是什么 【发布时间】:2021-12-16 10:12:44 【问题描述】:
sqlSave(dbConnect,dataKR[,c("a","b","c")],tablename=XYZ,safer=FALSE)


SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME= 'XYZ' AND COLUMN_NAME = 'a'

SQL 中的此查询不提供任何数据类型,因为表是使用 R 中的 SQLsave 创建的。 我怎么知道数据类型。

【问题讨论】:

select typ.name from sys.columns c join sys.types typ on typ.user_type_id = c.user_type_id and c.object_id = OBJECT_ID('XYZ') AND c.name = 'a'的结果是什么 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:

更好的代码是。它会带来列的名称及其关联的数据类型

select typ.name,c.name from sys.columns c 
join sys.types typ on typ.user_type_id = c.user_type_id and c.object_id = OBJECT_ID('XYZ') 

select typ.name,* from sys.columns c 
join sys.types typ on typ.user_type_id = c.user_type_id and c.object_id = OBJECT_ID('XYZ')

【讨论】:

以上是关于数据库表的列类型转换的主要内容,如果未能解决你的问题,请参考以下文章

在oracle创建表的时候,如何定义字符型的列,在插入数据之后,自动将其转换成大写或小写?

如何将 varchar 列值转换为 int?

如何使具有数据类型不匹配的列无效

Linux-数据库3

Linux-数据库3

返回给定表的列类型整数的查询