一个字段的数据类型能否从nvarchar更改为int?
alter table employee alter column designation int
这样做是否有效?如果无效,是否有其他方法可以实现?
附注:我正在使用 MS SQL Server
。
一个字段的数据类型能否从nvarchar更改为int?
alter table employee alter column designation int
这样做是否有效?如果无效,是否有其他方法可以实现?
附注:我正在使用 MS SQL Server
。
你可以尝试使用 alter table 命令。如果失败,请按照以下步骤操作:
ALTER TABLE tableName ADD newCol int;
UPDATE tableName SET newCol = CAST(oldCol AS int)
;
只有当您的列没有值或为空时才可能进行操作。如果您的列具有一些nvarchar类型的值,并且您尝试将其转换为int类型,它将显示错误。
ALTER TABLE [table_name] ALTER COLUMN [column_name] [data_type]
CREATE TABLE employee(designation NVARCHAR(10));INSERT INTO employee VALUES (N'10');alter table employee alter column designation int
是可以正常工作的。 - Martin Smith这对我起作用了(带小数,但我想它也适用于整数):
alter table MyTable add MyColNum decimal(15,2) null
go
update MyTable set MyColNum=CONVERT(decimal(15,2), REPLACE(LTRIM(RTRIM(MyOldCol)), ',', '.')) where ISNUMERIC(MyOldCol)=1
go
alter table MyTable drop column MyOldCol
go
EXEC sp_rename 'MyTable.MyColNum', 'MyOldCol', 'COLUMN'
go
只需要两步就可以更加简单地完成:
更新列并将所有非数字的值设置为null,以便修改不会失败。
修改表格并将类型设置为int。
UPDATE employee
SET designation = (CASE WHEN ISNUMERIC(designation)=1 THEN CAST(CAST(designation AS FLOAT) AS INT)END )
ALTER TABLE employee
ALTER COLUMN designation INT
创建临时列
ALTER TABLE MYTABLE ADD MYNEWCOLUMN NUMBER(20,0) NULL;
将数据从旧列复制并转换到新列
UPDATE MYTABLE SET MYNEWCOLUMN=CAST(MYOLDCOLUMN AS NUMBER(20,0));
删除旧列
ALTER TABLE MYTABLE DROP COLUMN MYOLDCOLUMN;
将新列重命名为与旧列相同的名称。
ALTER TABLE MYTABLE RENAME COLUMN MYNEWCOLUMN TO MYOLDCOLUMN;
你能试试这个吗?
alter table MyTable add MyColNum Varchar(500) null;
alter table MyTable add MyColNum int null;
int
- 在尝试转换之前,您需要清理数据。 - Damien_The_Unbeliever