我需要更改表中几个列的数据类型。
对于单个列,下面的工作很好:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0)
但是如何在一条语句中修改多个列呢?以下选项无效:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0),
CM_CommodityID NUMERIC(18,0)
正如其他人所说,您将需要使用多个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'
这会为每一列生成一条ALTER TABLE语句。
正如其他人所说,您将需要使用多个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'
这会为每一列生成一条ALTER TABLE语句。