build_substring_condition()
function build_substring_condition(
fieldSql,
operator,
value
): string;
Defined in: packages/rxdb-adapter-sqlite-core/src/query/query_sql.utils.ts:395
生成子串类操作符的 SQL 条件
Parameters
| Parameter | Type | Description |
|---|---|---|
fieldSql | string | 已限定的列 SQL |
operator | string | 子串类操作符 |
value | unknown | 规则值 |
Returns
string
SQL 条件字符串
Remarks
不用 LIKE:SQLite 的 LIKE 会把值里的 % _ 当通配符,且对 ASCII 大小写不敏感,
与 JS 增量匹配的 String.includes / startsWith / endsWith 结论相反 —— 同一份数据,
首次 SQL 查询命中、写入后的增量匹配又不命中,响应式查询会自行漂移(SQLC-007)。
instr / substr 走二进制比较,天然是「字面量 + 大小写敏感」,也就不需要 ESCAPE 子句。
空串的边界与 JS 一致:instr(X, '') 返回 1,substr(X, length(X) + 1) 返回 '',
对应 includes('') / startsWith('') / endsWith('') 恒为真。
产出的都是单个比较表达式,优先级高于 AND/OR,因此不需要自带括号 (对比 handle_array_in 的两段式条件)。
Throws
操作符不属于子串类时