Ano*_*mus 4 sql-server-2008 sql-server datatypes type-conversion
我有一堆包含许多数据类型列的表ntext。我想改变所有这些列的特定数据库的所有表格中nvarchar(max),由于计划弃用 (编辑:还因为我不能使用这样的列DISTINCT,GROUP BY等等)。是否可以在不手动为每个表使用ALTER TABLEwith 的情况下完成此ALTER COLUMN操作?
我正在使用 MS SQL Server 2008。
不,这里没有魔法或挥手。如果同义词适用于类型,那就太好了,但事实并非如此。如果您想让这些列成为一等公民,则需要更改表。您可以在某种程度上自动执行此操作,尽管我不会发布代码来帮助解决此问题,除非您指定“手动”的确切含义以及您认为这将是您想要避免的重大负担的原因。
要自动执行此操作,您可以说:
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += CHAR(13) + CHAR(10) + N'ALTER TABLE '
+ QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
+ '.' + QUOTENAME(OBJECT_NAME([object_id]))
+ ' ALTER COLUMN ' + QUOTENAME(name) + ' NVARCHAR(MAX)'
+ CASE is_nullable WHEN 0 THEN ' NOT NULL;' ELSE ';' END
FROM sys.columns
WHERE system_type_id = 99;
PRINT @sql;
-- EXEC sp_executesql @sql;
Run Code Online (Sandbox Code Playgroud)
也就是说,无论如何,您可能不想将这些列与不同的 / group by 一起使用。
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |