3.6.2.2.4. 不区分大小写查找
在数据源中可以使用 JPQL 查询语句的一个特殊功能,在 Middleware 层级的 Query 接口中有描述:可以使用 (?i)
前缀来轻松创建大小写不敏感的包含任意子串的查询条件。但是由于查询的值通常是显式传入的,所以会有以下不同:
(?i)
前缀需要放置在参数名称之前而不是放置在参数值内。参数值会被自动转化成小写。
如果参数值不包含
%
字符,则会在参数值的前后加上%
字符。
以下示例介绍如何处理下面这个查询语句:
select c from sales$Customer c where c.name like :(?i)component$customerNameField
从 customerNameField
组件拿到的参数会被自动转化成小写,并且前后放置 %
字符,然后在数据库会执行 lower(C.NAME) like ?
这样的 SQL 查询语句。
注意在这种情况下,按照 NAME
字段在数据中创建的索引将不会起作用。