设置列的排序规则后如何删除它?
SQL Server 中列的标准排序规则是“NULL”。这意味着,使用了数据库的排序规则。
TSQL 语句
ALTER table ALTER column COLLATE database_default
将显式地将列的排序规则设置为数据库的排序规则,但它不会恢复无排序规则(NULL 排序规则)的原始状态。
我们真的可以放弃排序规则吗?
不,您不能删除列甚至数据库的排序规则。
1:如果不指定任何排序规则,列将使用数据库的默认排序规则。
2:如果数据库未指定排序规则,则使用 服务器排序规则。
您可以将
COLLATION
的COLUMN
恢复到数据库默认值;您只需使用 database_default
作为您想要的排序规则名称:
ALTER TABLE someTableName ALTER COLUMN someColumnName [nvarchar](255) COLLATE database_default`
我使用这个简单的脚本来生成所有 SQL 语句。我见过其他创建语句并执行它们的脚本,但它们用于特定的命名排序规则。
SELECT TABLE_NAME,
COLUMN_NAME,
COLLATION_NAME,
CONCAT('ALTER TABLE ',TABLE_NAME ,' ALTER COLUMN ', COLUMN_NAME ,' [',DATA_TYPE,'](',CHARACTER_MAXIMUM_LENGTH,')
COLLATE database_default') AS theScripts
FROM information_schema.columns
WHERE COLLATION_NAME IS NOT NULL
AND collation_name <> 'SQL_Latin1_General_CP1_CI_AS'
AND data_type LIKE '%char%'