gpt4 book ai didi

sql-server - 将所有 VARCHAR 列更改为 NVARCHAR

转载 作者:行者123 更新时间:2023-12-03 18:22:29 24 4
gpt4 key购买 nike

我的数据库中有大约 200 列 VARCHAR无法存储卢比符号的类型。现在我必须更改 VARCHAR 中所有列的数据类型至 NVARCHAR .

谁能告诉我实现这一目标的捷径?为什么VARCHAR支持英镑符号而不是卢比符号?我问是因为我必须将英镑符号更改为卢比符号。

最佳答案

您可以使用 ff 查询查看所有列、它们的数据类型和它们所属的表:

SELECT 
t.name AS table_name,
c.name AS column_name,
tp.name AS data_type,
c.max_length,
c.is_nullable
FROM sys.tables AS t
INNER JOIN sys.columns c
ON t.OBJECT_ID = c.OBJECT_ID
INNER JOIN sys.types tp
ON tp.user_type_id = c.user_type_id
WHERE tp.name = 'varchar'

从上面的查询中,您要生成一个动态 sql,它将更改您所有的 VARCHAR列到 NVARCHAR .
DECLARE @sql AS VARCHAR(MAX) = ''

SELECT @sql = @sql
+ 'ALTER TABLE ' + table_name
+ ' ALTER COLUMN ' + column_name + ' NVARCHAR('
+ CASE WHEN max_length <> - 1 THEN CAST(max_length AS VARCHAR(10)) ELSE 'MAX' END + ')'
+ CASE WHEN is_nullable = 1 THEN ' NULL' ELSE '' END
+ ';' + CHAR(10)
FROM (
SELECT
t.name AS table_name,
c.name AS column_name,
tp.name AS data_type,
c.max_length,
c.is_nullable
FROM sys.tables AS t
INNER JOIN sys.columns c
ON t.OBJECT_ID = c.OBJECT_ID
INNER JOIN sys.types tp
ON tp.user_type_id = c.user_type_id
WHERE tp.name = 'varchar'
)t

PRINT @sql
EXEC(@sql)

关于sql-server - 将所有 VARCHAR 列更改为 NVARCHAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30772477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com