我正在尝试创建一个具有以下两个条件的查询:
- 应该是部分字符串匹配而不是完全匹配
- 应该不区分大小写
我的查询目前是这样的:
return list("company=?1 and name?=2", company, name);
但是,这不会进行部分字符串匹配。有这方面的运营商吗?
只是为了清楚起见,假设数据库包含peter, Peter, peTeR
,查询name=peter
应该返回所有 3 个名称。
我正在尝试创建一个具有以下两个条件的查询:
我的查询目前是这样的:
return list("company=?1 and name?=2", company, name);
但是,这不会进行部分字符串匹配。有这方面的运营商吗?
只是为了清楚起见,假设数据库包含peter, Peter, peTeR
,查询name=peter
应该返回所有 3 个名称。
LIKE
您可以使用运算符与如下函数组合来部分匹配字符串CONCAT
:
company like concat('%', ?1, '%')
LOWER
您可以使用这样的函数不区分大小写地匹配字符串:
lower(name) = lower(?2)
您还可以将两者结合起来以匹配部分和不区分大小写company
的部分:name
return list("lower(company) like concat('%', lower(?1), '%') and lower(name) like concat('%', lower(?2), '%')", company, name);