我将我们的MSSQL数据库设置为任何土耳其文归类时遇到问题。由于存在“土耳其语I”问题,因此我们所有包含“i”的查询均无法正常工作。例如,如果在这种情况下,我们定义了一个名为“Unit”的表,该表的列为“UnitID”,则查询“select unitid from unit”不再起作用,因为“id”中的小写字母“i”与定义的大写字母不同我在“UnitID”中。错误消息将显示为“无效的列名'unitid'。”

我知道发生这种情况是因为在土耳其语中,字母i和字母i被视为不同的字母。但是,我不确定如何解决此问题?不能选择通过数据库中的所有1900 SP并更正“i”的大小写。

我们将不胜感激,甚至会建议其他排序规则的建议,以代替土耳其语,但会支持它们的字符集,这将不胜感激。

最佳答案

事实证明,最好的解决方案实际上是重构所有SQL和代码。

在过去的几天中,我编写了一个重构应用程序,以修复所有存储的proc,函数, View ,表名保持一致并使用正确的大小写,例如:

select unitid from dbo.unit

将被更改为
select UnitId from dbo.Unit

然后,该应用程序还将遍历代码,并替换存储的proc及其参数的所有出现,并更正它们以匹配数据库中定义的大小写。应用程序中的所有数据表均设置为不变的语言环境(感谢FXCop指出了所有数据表。),这可以防止代码内的调用必须区分大小写。

如果有人想要该应用程序或有关该过程的任何建议,则可以通过[email protected]与我联系。

关于sql - 土耳其语SQL排序规则出现问题(土耳其语 "I"),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/780671/

10-09 03:44