跳到主要内容

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​

ParameterTypeDescription
fieldSqlstring已限定的列 SQL
operatorstring子串类操作符
valueunknown规则值

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​

操作符不属于子串类时