SQL中改变列的数据类型

一、该列非主键、无default约束

直接更新:

alter table 表名 alter column 列名 数据类型

二、该列为主键列、无default约束

(1)删除主键

alter table 表名 drop constraint 主键名称

(2)更新数据类型

alter table 表名 alter column 列名 数据类型 not null

(3)添加主键

alter table 表名 add constraint 主键名称 primary key (主键字段1,主键字段2)

三、该列为主键列,有default约束

(1)删除主键

alter table 表名 drop constraint 主键名称

(2)解除default约束

USE 数据库名
IF EXISTS (SELECT name FROM sysobjects
WHERE name = ‘default约束名‘ 
AND type = ‘D‘)
BEGIN 
EXEC sp_unbindefault ‘数据表.字段‘
END
GO

(3)更新数据类型

alter table 表名 alter column 列名 数据类型 not null

(4)添加主键

alter table 表名 add constraint 主键名称 primary key (主键字段1,主键字段2)

辅助语句:

(1)找出字段约束名称并赋值到变量中

declare @name varchar(50)
select  @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault 
where a.id = object_id(‘表名‘) 
and a.name =‘列名‘

(2)将字段绑定到用户自定义的数据类型,并不影响现有绑定(使用futureonly)

此示例将默认值 def_ssn 绑定到用户定义的数据类型 ssn。因为已指定 futureonly,所以不影响类型 ssn 的现有列。
USE 数据库名
EXEC sp_bindefault ‘列名‘, ‘自定义数据类型‘, ‘futureonly‘

时间: 2024-10-11 23:20:33

SQL中改变列的数据类型的相关文章

查询sql时 改变列原来的类型

查询sql时 改变列原来的类型SELECT   create_time   FROM    ciimp_fin_invoice               本来要查询的 是 创建时间 时间类型 结果为 2017-03-29 03:29:40 SELECT create_time+'' FROM ciimp_fin_invoice 在sql列中 +'' 将其列改变为字符串类型,输出的结果为:20170329032940    + 可扩展 字符串.数字.时间 类型都可以

Asp.net 修改已有数据的DataTable中某列的数据类型

DataTable dt_PI = new DataTable(); //克隆表结构 dt_PI = ds.Tables[0].Clone(); dt_PI.Columns["FLTFullPercentage"].DataType = typeof(String);//修改[满柜百分比]列的数据类型 foreach (DataRow row in ds.Tables[0].Rows) { DataRow rowNew = dt_PI.NewRow(); foreach (DataCo

在 Pandas 中更改列的数据类型

import pandas as pd import numpy as np a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] df = pd.DataFrame(a) df.dtypes 0 object 1 object 2 object dtype: object 数据框(data.frame)是最常用的数据结构,用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同数据列的数据类型可以相同,也可以

在Pandas中更改列的数据类型【方法总结】

先看一个非常简单的例子: a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']] df = pd.DataFrame(a) 有什么方法可以将列转换为适当的类型?例如,上面的例子,如何将列2和3转为浮点数?有没有办法将数据转换为DataFrame格式时指定类型?或者是创建DataFrame,然后通过某种方法更改每列的类型?理想情况下,希望以动态的方式做到这一点,因为可以有数百个列,明确指定哪些列是哪种类型太麻烦.可以假定每列都

sql中一列拆成两列

declare @table table (name nvarchar(4))insert into @tableselect '张三' union allselect '李四' union allselect '王五' union allselect '刘三' union allselect '杨二' union allselect '胡八' union allselect '赵六' --方法1:create table #t (id int identity(1,1),name nvarch

SQL 中判断列中的值是否为null,为null时候用0来代替

string strsql = "select itemno,cname,ename,shortname,IntervalInvalid,IntervalCheck,IntervalInceptReceive,IntervalCheckSend,isnull(IntervalInvalid,0)+isnull(IntervalCheck,0)+isnull(IntervalCheckSend,0)+isnull(IntervalInceptReceive,0)as couns from test

在mysql中,如何改变列声明.

C 在mysql中,如何改变列声明. 修改表 - 修改列名 使用 CHANGE COLUMN 来修改列的名字,还必须 设置 列的数据类型 mysql> desc test_tab -> // +-------+-------------+------+-----+---------+-------+ | Field | Type        | Null | Key | Default | Extra | +-------+-------------+------+-----+-------

模拟实现SQL Server字段列显示的数据类型

本文目录列表: 1.SQL Server表设计视图中的数据类型列展示效果 2.模拟实现类似的数据类型显示效果 3.测试效果 4.总结语 5.参考清单列表 1.SQL Server表设计视图中的数据类型列展示效果   在SQL Server 2012的表设计视图中可以看到如下图的效果: 如上图所示红色矩形框圈住的数据类型列中展示的效果,特别针对用户定义数据类型也显示了其基本数据类型. 这种针对字段列显示的数据类型效果很直接,很容易看到其数据类类型是什么,甚至看能看到精度或小数位,最重要的是显示了用

SQL笔记----在一个关系表中操作列

使用alter关键字,可以为一个表添加新的列. 比如: 给Persons的表中添加一列,名字为Birthday,类型是date. ALTER TABLE Persons ADD Birthday date 使用alter的格式为: ALTER TABLE table_name ADD column_name datatype 在一个表中删除一列的操作为: ALTER TABLE table_name DROP COLUMN column_name 改变列的属性: ALTER TABLE tabl