LIKE
在 SQL Server 中,使用 EF Core 5 和 PredicateBuilder创建不区分大小写、不区分重音的查询相对简单。
例如:
- 用户正在尝试使用标准北美键盘在数据库中查找客户(即重音输入有点痛苦)。
- 搜索
helene
应该匹配Mme. Hélène Laurendeau
。重要的是我们可以匹配一个子字符串,而不仅仅是一个前缀或后缀。
假设我们有一个Customer
具有 property的实体Name
,以下代码段将按预期工作:
var predicate = PredicateBuilder
.New<Customer>(c => EF.Functions.Collate(c.Name,
"Latin1_general_CI_AI")
.Contains("helen"));
var customers = context.Customers.AsExpandable().Where(predicate);
我们如何在 PostgreSQL(10 或更高版本)中执行相同的查询?
我们刚刚从 SQL Server 进行了快速(基本上是 1:1)迁移,并正在尝试更新我们的代码以确保可以进行一般迁移。这个问题没有考虑到可能的查询速度问题(有关更多信息,请参阅链接。)