就数据库而言,我真的很弱,请耐心等待。 我有一个在Greek.CI_AI中的数据库工作,几个应用程序没有任何问题。将数据放入此数据库的所有服务器都使用希腊语语言环境。
但是,应用程序会以区分大小写的方式处理其信息并检查完整性约束。到目前为止,我还没有遇到过具体应用程序的任何问题,但我担心以后当数据更多而影响更大时我可能不得不处理它。这样做的正确方法是什么?我的意思是我只是更改它,还是应该删除它并使用正确的排序重新创建它?如果我不必丢弃它,这将如何影响数据?
比较两者我没有发现差异。
http://collation-charts.org/mssql/mssql.0408.1253.Greek_CI_AI.html http://collation-charts.org/mssql/mssql.0408.1253.Greek_CS_AI.html
感谢您的帮助!
答案 0 :(得分:2)
您不应将db排序规则从Greek_CI_AI更改为Greek_CS_AI / BIN。 如果您的应用程序以区分大小写方式检查完整性约束,则仅表示您的业务规则需要此方法,并且这种区分大小写直接在这些约束中实现。
如果将数据库排序规则更改为Greek_CS_AI,则可以破坏应用程序代码。如果您的数据库中现在有表Table1
和Table2
,则所有代码都可以将它们引用为table1
和table2
,但是一旦您的db排序规则区分大小写,对象就会1}}和table1
将无法找到。
另外,Greek.CI_AI和Greek.BIN
之间有什么区别
要通过您的眼睛查看此内容,请尝试对table2
语句中添加ORDER BY col1 COLLATE Greek_CS_AI --Greek_CS_BIN
的数据进行一些选择
您会发现,在第一种情况下,您的大写/小写字母将彼此相邻放置,但小写字母将始终在同一个字母内的大写字母之前,而在第二个(BIN)情况下,所有大写字母将在ALL之前像这样的小写字母:
这是因为SELECT
校对根据其ascii代码比较字符。
请注意,BIN
排序规则中存在一个错误,只能正确比较字符串的第一个字符,因此如果您需要使用二进制排序规则,请始终使用没有错误的BIN
排序规则