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 字段在数据中创建的索引将不会起作用。