如果条件满足sql,则动态地将列数据类型从nvarchar更改为十进制

时间:2015-10-21 06:27:03

标签: sql sql-server sql-server-2008

我想动态更改我的列的数据类型" ROE 2"如果列标题类似于" ROE"。

,则在表tb1到十进制中

我的列标题会随着时间的推移而增加

有可能吗?

2 个答案:

答案 0 :(得分:0)

你需要为此编写动态SQL ..从这里开始http://www.sqlteam.com/article/introduction-to-dynamic-sql-part-2

答案 1 :(得分:0)

您可以使用目录视图sys.columns从表中检索所有想要的列,并将ALTER语句构造为字符串:

SELECT 'ALTER TABLE tb1 ALTER COLUMN [' + name + '] Decimal(18,2) NULL'
FROM sys.columns
WHERE [object_id] = OBJECT_ID('tb1')
AND name LIKE 'ROE%'

从那里你可以抓取查询并手动运行它们或打开CUSROR并迭代每个语句以通过EXEC调用来运行它们。