Skip to main content

Module json_query

Module json_query 

Source
Expand description

JSON 字段查询增强

对应 think-orm 的 JSON 字段查询语法,支持 MySQL JSON 函数 + PostgreSQL jsonb 函数 + SQLite json_extract。

§三种方言差异

操作MySQLPostgreSQLSQLite
取字段->'$.field'->>'field'json_extract(col, '$.field')
取路径->'$.a.b'#>>'{a,b}'json_extract(col, '$.a.b')
包含键JSON_CONTAINS(col, '"v"', '$.k')col @> '{"k":"v"}'json_extract(col,'$.k')='v'
数组长度JSON_LENGTH(col)jsonb_array_length(col)json_array_length(col)

§用法

use sz_orm_query::json_query::JsonQuery;
use sz_orm_model::DbType;

// MySQL: WHERE `prefs`->'$.theme' = 'dark'
let cond = JsonQuery::new(DbType::MySQL, "prefs")
    .path("theme")
    .eq_string("dark");

Structs§

JsonQuery
JSON 字段查询构造器
JsonUpdate
JSON 字段更新构造器