数据库表的列类型转换
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')
【讨论】:
以上是关于数据库表的列类型转换的主要内容,如果未能解决你的问题,请参考以下文章