knex 本身没有内置的 `wherelike` 跨多列“或”匹配函数,但可通过链式调用 `orwherelike` 构建 or 条件,实现对多个字段的独立模糊搜索,避免重复行且保持查询高效。
在 Knex 中,连续使用 .whereLike() 会生成 SQL 的 AND 逻辑(即所有条件必须同时满足),这显然不符合“任一字段匹配即返回”的需求。要实现跨 EmployeeNickname 和 EmployeeRealname 等多个字段的并行模糊匹配,必须显式使用 .orWhereLike() —— 它会将后续条件以 OR 方式拼接到 WHERE 子句中,前提是它紧跟在首个 .where*() 调用之后(Knex 会自动将首次 .where*() 视为 WHERE,后续 .orWhere*() 视为 OR 分支)。
例如,针对查询关键词 “J”,期望匹配以下三类模式:
- EmployeeNickname 以 “J” 开头(’J%’)
- EmployeeRealname 以 “J” 开头(’J%’)
- EmployeeNickname 包含 “J”(’%J%’)
正确写法如下: