设置列后如何删除列的排序规则?
SQL Server 中列的标准排序规则为"NULL"。这意味着,使用数据库的排序规则。
TSQL 语句ALTER table ALTER column COLLATE database_default
会将列的排序规则显式设置为数据库的排序规则,但它不会还原无排序规则的原始状态(NULL 排序规则)。
我们真的可以放弃排序规则吗?
不,您不能删除列甚至数据库的排序规则。
1:如果未指定任何排序规则,则列将使用数据库的默认排序规则。
2:如果数据库未指定排序规则,则使用服务器排序规则。
可以将COLUMN
的COLLATION
恢复为数据库默认值;只需使用 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%'