字符串与德语字母ß;的比较;

本文关键字:#223 比较 德语 字符串 | 更新日期: 2023-09-27 18:29:05

我正试图根据客户代码获得客户:

var customer = GetAllCustomers()
               .FirstOrDefault(c => c.CustomerCode.ToLower().Trim() ==
                                    customerCode.ToLower().Trim());

在一种情况下,customerCode"Andreas Graßl"(我认为这是一个德语名称)

但是,在数据库(SQL Server 2008 R2)中,数据保存为"Andreas Grassl"(ß变为ss),并且我的查询找不到匹配项。

有人能告诉我这是数据库中的排序规则问题还是C#中的文化问题吗
如何修复它,以便我的查询返回匹配项?

字符串与德语字母ß;的比较;

string str1="Andreas Graßl";
string str2="Andreas Grassl";
Console.WriteLine(string.Equals(str1,str2));  //False
Console.WriteLine(string.Equals(str1,str2,StringComparison.CurrentCulture));  //True

所以我建议您使用字符串来更改代码。等于()

详细信息:http://msdn.microsoft.com/en-us/library/vstudio/cc165449.aspx

一种解决方案可以是使用DIFFERENCE:执行"听起来像"的搜索

SELECT *
FROM Person
WHERE DIFFERENCE(Person.LastName, 'Graßl') >= x

请运行脚本以按照以下Unicode格式重新更新CustomerCode:

UPDATE Customer SET CustomerCode = N'Andreas Graßl' WHERE CustomerID = [YourCustomerID]

希望这对你有帮助!!

在德语中,ßss在某种程度上可以互换使用。用户输入是否可能在保存期间为ss,随后在查找期间为ß