Mariadb

MariaDB JSON 函式

  • June 8, 2021

我正在使用 MariaDB 10.5,我在一個表中有一個 JSON 欄位,該欄位通常包含以下內容:

[{"Filename":"C:/Users/simon/Documents/file.ext"},{"Soil":"Sand"},{"Present":"None"},{"Value":"5000"}]

我想建構可以在數據庫中查找匹配項的查詢,所以我可能有一個QStringList包含:

Soil:Sand
Value:5000

其中冒號左邊的值是 JSON 成員名稱,右邊的值是要比較的值。

我如何使用這些來構造一個查詢,其中表名是例如: datasets 和欄位是 jsonParams ?

使用 JSON_SEARCH()。

...
WHERE JSON_SEARCH(value, 'one', 'Sand', NULL, '$[*].Soil') IS NOT NULL

"Soil"如果整個值只有一個屬性,則您的 JSON_VALUE() 方法適用。

**[DEMO fiddle](https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=770437245be917a161893749d0e5bae4)**

完成…我像這樣使用函式JSON_VALUE

SELECT
 biPK
FROM
 datasets
WHERE
 JSON_VALUE(jsonParams, '$[*].Soil')='Sand'

$$ * $$上面告訴它在數組中查找術語“Soil”的任何索引並與“Sand”進行比較。

引用自:https://dba.stackexchange.com/questions/293920