D.m*_*esh 127 t-sql sql-server alter-column
我需要ALTER
表中几列的数据类型.
对于单个列,以下工作正常:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0)
Run Code Online (Sandbox Code Playgroud)
但是如何在一个语句中更改多个列?以下不起作用:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0),
CM_CommodityID NUMERIC(18,0)
Run Code Online (Sandbox Code Playgroud)
Nei*_*ght 123
这是不可能的.您需要逐个完成此操作.
您可以使用修改后的列创建临时表,复制数据,删除原始表并将临时表重命名为原始名称.
Fer*_*res 20
在单个ALTER TABLE语句中执行多个ALTER COLUMN操作是不可能的.
请参阅此处的ALTER TABLE语法:http:
//msdn.microsoft.com/en-US/library/ms190273.aspx
您可以执行多个ADD或多个DROP COLUMN,但只能执行一个ALTER COLUMN.
小智 10
以下解决方案不是用于更改多列的单个语句,但是,它使生活变得简单:
生成表的CREATE
脚本.
更换CREATE TABLE
用ALTER TABLE [TableName] ALTER COLUMN
的第一线
从列表中删除不需要的列.
根据需要更改列数据类型.
执行查找和替换...如下:
NULL
,NULL; ALTER TABLE [TableName] ALTER COLUMN
运行脚本.
希望它能节省很多时间:))
正如其他人已经回答的那样,您需要多个ALTER TABLE语句.尝试:
ALTER TABLE tblcommodityOHLC alter column CC_CommodityContractID NUMERIC(18,0);
ALTER TABLE tblcommodityOHLC alter column CM_CommodityID NUMERIC(18,0);
Run Code Online (Sandbox Code Playgroud)
等等
由于很多人都表示,你将需要使用多个ALTER COLUMN
语句,一个是你要修改的每一列。
如果要将表中的所有或部分列修改为同一数据类型(例如将VARCHAR字段从50个字符扩展为100个字符),则可以使用下面的查询自动生成所有语句。如果你要替换多个字段相同的字符(如去除所有列\ T)这一技术也很有用。
SELECT
TABLE_CATALOG
,TABLE_SCHEMA
,TABLE_NAME
,COLUMN_NAME
,'ALTER TABLE ['+TABLE_SCHEMA+'].['+TABLE_NAME+'] ALTER COLUMN ['+COLUMN_NAME+'] VARCHAR(300)' as 'code'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'your_table' AND TABLE_SCHEMA = 'your_schema'
Run Code Online (Sandbox Code Playgroud)
这ALTER TABLE
将为您为每个列生成一个语句。
归档时间: |
|
查看次数: |
229540 次 |
最近记录: |