字符串与德语字母ß;的比较;
本文关键字:#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
,随后在查找期间为ß
?