sql转换字段类型
A. mssql已有数据,要将某项类型从text转换成varchar,sql应该怎么写
sql数据库不允许对Text类型的字段经常转换
不过我们通常用这个方法来解决类似问题,希望对你有帮助
--假设有表A(ID int ,Addr text)
--首先添加一个字段
alter table A add addr1 varchar(20)
--将原来text类型的字段内容拷贝过来
update A set Addr1=addr
--去除原表里的Text类型字段
alter table a drop column addr
--这样以后凡是用到Addr 字段的地方用Addr1代替就行了
--当然你可以再添加一个varchar(20)型的字段Addr
alter table A add addr1 varchar(20)
--然后把字段内容拷贝回
update A set Addr=addr1
alter table a drop column addr1
--这样就会和原来一样使用了
--希望对你有帮助
B. SQL怎么样把numeric类型的数据转换为varchar类型的数据
可以用cast来转换。
如:列名叫grade,表名为A select cast(grade as numeric(y,x)) from A 其中y代表数据长度,x代表小数位长度。
注意:grade中必须全为数字或小数点,如果存在中文或英文,则运行时会报错。
使用CAST函数进行数据类型转换时,在下列情况下能够被接受:
(1)两个表达式的数据类型完全相同。
(2)两个表达式可隐性转换。
(3)必须显式转换数据类型。
(2)sql转换字段类型扩展阅读
SQL中类型转换函数:
1、cast
cast(表达式 as 数据类型)
select 100.0 +cast('1000' as int) -- 1100.0 默认把字符串转换成浮整形。
2、convert
convert(数据类型,表达式)
select 100.0 + convert(int,'1000')-- 1100.0 默认把字符串转换成整形。
3、select * from student order by convert (int,bid) desc --bid列按照降序来排列,bid是varchar类型。
4、print convert(varchar(10),getdate(),120) --日期转换varchar(10)表示显示的字符长度,120表示style,可以在SSMS 帮助中查看详情。
5、cast不可以转换日期类型,convert可以通用。
C. sql 修改字段类型
alter table 表名 alter column 字段名 type not null。
1、修改字段名:
alter table 表名 rename column A to B。
2、修改字段默认值:
alter table 表名 add default (0) for 字段名 with values,如果字段有默认值,则需要先删除字段的约束,在添加新的默认值。
3、增加字段:
alter table 表名 add 字段名 type not null default 0 。
5、删除字段:
alter table 表名drop column 字段名。
(3)sql转换字段类型扩展阅读:
alter其他用法
1.重命名表
ALTER TABLE 【表名字】 RENAME 【表新名字】
2.删除表中主键
Alter TABLE 【表名字】 drop primary key
3.添加主键
ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY (resid,resfromid)
4.添加索引
ALTER TABLEsj_resource_charges add index INDEX_NAME (name);
5.添加唯一限制条件索引
ALTER TABLE sj_resource_charges add unique emp_name2(cardnumber);
6.删除索引
alter table tablename drop index emp_name;
7.联合唯一索引
ALTER TABLE tablenameADD UNIQUE INDEX INDEX_NAME(school_id, settlement_time);
alterignoretable tablenameadniqueindex(user_id,user_name)
D. 在sql server2000中,如何把整型字段转换成字符串型字段
使用函数STR()
STR
由数字数据转换来的字符数据。
语法
STR ( float_expression [ , length [ , decimal ] ] )
参数
float_expression
是带小数点的近似数字 (float) 数据类型的表达式。不要在 STR 函数中将函数或子查询用作 float_expression。
length
是总长度,包括小数点、符号、数字或空格。默认值为 10。
decimal
是小数点右边的位数。
返回类型
char
注释
如果为 STR 提供 length 和 decimal 参数值,则这些值应该是正数。在默认情况下或者小数参数为 0 时,数字四舍五入为整数。指定长度应该大于或等于小数点前面的数字加上数字符号(若有)的长度。短的 float_expression 在指定长度内右对齐,长的 float_expression 则截断为指定的小数位数。例如,STR(12,10) 输出的结果是 12,在结果集内右对齐。而 STR(1223, 2) 则将结果集截断为 **。可以嵌套字符串函数。
说明 若要转换为 Unicode 数据,请在 CONVERT 或 CAST 转换函数内使用 STR。
示例
A. 使用 STR
下例将包含五个数字和一个小数点的表达式转换为有六个位置的字符串。数字的小数部分四舍五入为一个小数位。
SELECT STR(123.45, 6, 1)
GO
下面是结果集:
------
123.5
(1 row(s) affected)
当表达式超出指定长度时,字符串为指定长度返回 **。
SELECT STR(123.45, 2, 2)
GO
下面是结果集:
--
**
(1 row(s) affected)
即使数字数据嵌套在 STR内,结果集也是带指定格式的字符数据。
SELECT STR (FLOOR (123.45), 8, 3)
GO
下面是结果集:
--------
123.000
(1 row(s) affected)
E. SQL如何用语句更改字段的数据类型
SQL如何用语句更改字段可以用以下语句可以实现:
altertable表名altercolumn字段名变更后的字段类型。
注意:
但若是关键字段,带有主键,并且字段类型为用户自定义类型,具有默认值的情况下,用上述语句会出现错误。
例如:
现假设表为TABLE1,关键字段为FIELD1,主键为PK_FIELD1,关键字段的数据类型为用户自定义数据类型cha_field1,实际为CHAR(10),默认值为dbo.D_field1现要求将字段类型改为varchar(20),默认值去除错误提示如下:
服务器:消息5074,级别16,状态1,行1
对象'D_field1'依赖于列'field1'。
服务器:消息5074,级别16,状态1,行1
对象'PK_field1'依赖于列'field1'。
服务器:消息4922,级别16,状态1,行1
ALTERTABLEALTERCOLUMNfield1失败,因为有一个或多个对象访问此列。
F. sql语句中数据类型转换怎么写
如下:
表一trxorder 字段id(bigint),status,requestid(varchar)
表二payment 字段id(bigint),authstatus,trxorder_id(bigint)(trxorder_id是参考trxorder表的id的外键)
表三manual 字段status, eventkey(varchar)(eventkey是参考payment表的id的外键)!
G. 如何用SQL语句将表格中的tn字段的数据类型修改为char(8)
alter table change column tn char(8);这样就可以修改字段类型了,还可以设置字段是否为空,是否有默认值,以及字段注释。
H. SQL语句如何修改主键字段的字段类型类型
首先,修改主键字段的字段类型,肯定是要先删除主键才能操作的
--【1.查找主键】
--SQLSERVER
select name as pkName from dbo.sysobjects where xtype='PK' and parent_obj=(select id from dbo.sysobjects where name='表名')
--ORACLE
SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = UPPER('表名') AND CONSTRAINT_TYPE ='P'
--【2.删除主键约束】
ALTER TABLE 表名 DROP CONSTRAINT 约束名
--ORACLE
--删除主键连同索引
ALTER TABLE 表名 DROP CONSTRAINT 约束名 CASCADE DROP INDEX;
或者
ALTER TABLE 表名 DROP PRIMARY KEY CASCADE DROP INDEX;--【3.修改字段】
--【先把这一列的值备份到临时列里,再把这一列update成null,再修改类型,再把数据拷贝回来】
--SQLSERVER
--默认值单独处理,关联约束
--默认值的变更涉及到约束,如有约束,需要先查询出越是再进行删除
ALTER TABLE 表名 DROP CONSTRAINT 约束名
ALTER TABLE 表名 ALTER COLUMN 字段名 字段类型(长度精度) 是否为空
ALTER TABLE 表名 ADD CONSTRAINT 约束名 DEFAULT 默认值 FOR 字段名
--ORACLE
--删除默认值:default null
ALTER TABLE 表名 MODIFY COLUMN 字段名 VARCHAR2(20) DEFAULT ' ' NOT NULL--【4.新增主键】
--指定主键名字
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY (F1,F2);
--未指定主键名字
ALTER TABLE 表名 ADD PRIMARY KEY (F1,F2)