我需要确定SQL 2012中数据库的排序,并从中提取区分大小写的内容。我该怎么做呢?在我知道了collasion大小写敏感性之后,我需要在C#中使用它。大小写敏感性与C#之间是否存在映射?
发布于 2014-03-31 11:47:58
你的问题从根本上讲是有缺陷的,因为它将一个排序规则的所有特征简化为只对大小写敏感。在这种假设下编写代码将导致错误的代码,而我只有两个单词: add:土耳其I。要正确,您必须在C#代码中使用与数据库中的排序规则相同的排序规则,而不是简单地使用ToLowerCase()或ToUpperCase()。
我问如何将它映射到C#
考虑到Server支持的排序规则列表是已知的和固定的(对于每个版本),我建议对从Server返回的校对名称到C#文化名称的映射进行硬编码。您只需构建一次列表,构建起来就相当容易。您将需要以某种方式处理可能附带新排序规则的Server的未来版本。
警告(再次.)你想要解决的问题远非微不足道。SQL Server使用给定的排序规则来保存数据,这使得对排序规则的更改变得不可能(如果排序规则在保存B之后表示A排序,那么将排序规则更改为B之前的排序规则将导致读取持久化数据时出现数据损坏,对于相等比较、考虑外键、唯一和检查约束等)。但是,该平台(Windows)确实不时地更改排序规则设置,通常是为了修复现有排序规则中的错误。您的C#区域性将使用当前的平台排序规则,这可能与2008年的相同排序规则捕获的SQL不同。桥下有很多龙..。
发布于 2014-03-31 11:46:42
大小写敏感性与C#之间是否存在映射?
是的,鉴于这一点:
http://technet.microsoft.com/en-us/library/ms174396.aspx
对于具有默认排序规则的属性。
因此,有一个映射。只是不像你想要的那样简单。
但是没有关联-- Server映射非常详细。名字比较是最好的选择。
https://stackoverflow.com/questions/22760687
复制相似问题