sql - 如何用SQL设置列的排序规则?

标签 sql sql-server collation

最初,我在本地计算机上创建了 SQL Server 数据库。我将其排序规则设置为 Latin1_General_CI_AI 并且一切正常。当我将完成的工作移至网络托管 SQL Server 时,我遇到了问题:它们使用不同的数据库排序规则。那我现在能做什么呢?

更具体地说,我需要 Latin1_General_CI_AI,但他们有 Czech_CI_AS。在比较捷克语字符串时,这两者有很大不同(令人惊讶的是,我需要 latin1 General,而不是捷克语,才能获得正确的结果。)

当我尝试更改数据库的排序规则时,服务器提示我没有执行此操作的用户权限。我尝试联系支持台,但没有成功。我可以帮助自己吗?

我知道可能每个表列都可以有自己的排序规则,所以也许我应该将所有字符串列设置为 Latin1_CI_AI。但我不知道该怎么做。我只能通过 SQL 访问数据库(遗憾的是没有 SQL Server Management Studio)。

最佳答案

更改数据库的排序规则

ALTER DATABASE MyDataBase COLLATE [NewCollation]

更改列的排序规则

ALTER TABLE MyTable ALTER COLUMN Column1 [TYPE] COLLATE [NewCollation]

但是何时可以执行此操作有许多限制,非常值得注意的是,如果在任何索引中使用该列,则此操作会被拒绝。
在某些情况下,您可以在 SSMS 中执行更多操作。
语法文档列出了限制:

关于sql - 如何用SQL设置列的排序规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12205881/

相关文章:

python - 如何使用python查询SQlite,然后比较查询结果?

java - 太多的 SQL 变量和 NOT IN 子句

sql - 将具有相同 ID 的多行合并为一行

php - 当 WHERE 存在时 SQL Server 更新

mysql - 如何定义每列的优先级,然后按该优先级显示结果顺序?

sql - MySQL - 新手问题 : Which are the PK and the FK for these tables?

sql-server - 系统进程正在锁定我的数据库文件 MDF

sql-server - sql server 中的语言环境感知排序

mysql - utf8_general_ci 和 utf8_unicode_ci 有什么区别?

tsql - 针对SQL Server中的不同排序规则对列进行排序