Collections:
JSON_SEARCH() - Searching String in JSON
How to search a string in a JSON (JavaScript Object Notation) value using the JSON_SEARCH() function?
✍: FYIcenter.com
JSON_SEARCH(json, one_or_all, pattern, escape, path) is a MySQL built-in function that
searches for a string pattern in a JSON (JavaScript Object Notation) value.
It returns a single match as a JSON string, or multiple matches
as a JSON array. String pattern supports 2 wildcard
characters: "_" for any character and "%" for any number of characters.
For example:
SET @j = '["abc", [{"k": "10"}, "def"], {"x":"abc"}, {"y":"bcd"}]';
SELECT JSON_SEARCH(@j, 'one', 'abc');
-- +-------------------------------+
-- | JSON_SEARCH(@j, 'one', 'abc') |
-- +-------------------------------+
-- | "$[0]" |
-- +-------------------------------+
SELECT JSON_SEARCH(@j, 'all', 'abc');
-- +-------------------------------+
-- | JSON_SEARCH(@j, 'all', 'abc') |
-- +-------------------------------+
-- | ["$[0]", "$[2].x"] |
-- +-------------------------------+
SELECT JSON_SEARCH(@j, 'all', 'ghi');
-- +-------------------------------+
-- | JSON_SEARCH(@j, 'all', 'ghi') |
-- +-------------------------------+
-- | NULL |
-- +-------------------------------+
SELECT JSON_SEARCH(@j, 'all', '10');
-- +------------------------------+
-- | JSON_SEARCH(@j, 'all', '10') |
-- +------------------------------+
-- | "$[1][0].k" |
-- +------------------------------+
SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$');
-- +-----------------------------------------+
-- | JSON_SEARCH(@j, 'all', '10', NULL, '$') |
-- +-----------------------------------------+
-- | "$[1][0].k" |
-- +-----------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$[*]');
-- +--------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '10', NULL, '$[*]') |
-- +--------------------------------------------+
-- | "$[1][0].k" |
-- +--------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$**.k');
-- +---------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '10', NULL, '$**.k') |
-- +---------------------------------------------+
-- | "$[1][0].k" |
-- +---------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$[*][0].k');
-- +-------------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '10', NULL, '$[*][0].k') |
-- +-------------------------------------------------+
-- | "$[1][0].k" |
-- +-------------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$[1]');
-- +--------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '10', NULL, '$[1]') |
-- +--------------------------------------------+
-- | "$[1][0].k" |
-- +--------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '10', NULL, '$[1][0]');
-- +-----------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '10', NULL, '$[1][0]') |
-- +-----------------------------------------------+
-- | "$[1][0].k" |
-- +-----------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', 'abc', NULL, '$[2]');
-- +---------------------------------------------+
-- | JSON_SEARCH(@j, 'all', 'abc', NULL, '$[2]') |
-- +---------------------------------------------+
-- | "$[2].x" |
-- +---------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '%a%');
-- +-------------------------------+
-- | JSON_SEARCH(@j, 'all', '%a%') |
-- +-------------------------------+
-- | ["$[0]", "$[2].x"] |
-- +-------------------------------+
SELECT JSON_SEARCH(@j, 'all', '%b%');
-- +-------------------------------+
-- | JSON_SEARCH(@j, 'all', '%b%') |
-- +-------------------------------+
-- | ["$[0]", "$[2].x", "$[3].y"] |
-- +-------------------------------+
SELECT JSON_SEARCH(@j, 'all', '%b%', NULL, '$[0]');
-- +---------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '%b%', NULL, '$[0]') |
-- +---------------------------------------------+
-- | "$[0]" |
-- +---------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '%b%', NULL, '$[2]');
-- +---------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '%b%', NULL, '$[2]') |
-- +---------------------------------------------+
-- | "$[2].x" |
-- +---------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '%b%', NULL, '$[1]');
-- +---------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '%b%', NULL, '$[1]') |
-- +---------------------------------------------+
-- | NULL |
-- +---------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '%b%', '', '$[1]');
-- +-------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '%b%', '', '$[1]') |
-- +-------------------------------------------+
-- | NULL |
-- +-------------------------------------------+
SELECT JSON_SEARCH(@j, 'all', '%b%', '', '$[3]');
-- +-------------------------------------------+
-- | JSON_SEARCH(@j, 'all', '%b%', '', '$[3]') |
-- +-------------------------------------------+
-- | "$[3].y" |
-- +-------------------------------------------+
Reference information of the JSON_SEARCH() function:
JSON_SEARCH(json, one_or_all, pattern, escape, path): match
Searches for a string pattern in a JSON (JavaScript Object Notation) value.
It returns a single match as a JSON string, or multiple matches
as a JSON array. String pattern supports 2 wildcard characters:
"_" for any character and "%" for any number of characters.
Arguments, return value and availability:
json: Required. The JSON value to be search from.
one_or_all. Required. The search option: "one" or "all".
pattern: Required. The string pattern to search for.
escape: Optional. The default is NULL.
The escape character to protect the wildcard characters: _ and %
path: Optional. The default is "$". The JSON path to limit the search.
match: Return value. The match result.
Available since MySQL 5.7.
⇒ JSON_SET() - Inserting/updating JSON Child Members
⇐ JSON_SCHEMA_VALIDATION_REPORT() - JSON Schema Validation Report
2023-12-11, 1270🔥, 0💬
Popular Posts:
How To Look at the Current SQL*Plus System Settings in Oracle? If you want to see the current values...
How to run Queries with SQL Server Management Studio Express in SQL Server? 1. Launch and connect SQ...
What Happens If the Imported Table Already Exists in Oracle? If the import process tries to import a...
How To Assign Debug Privileges to a User in Oracle? In order to run SQL Developer in debug mode, the...
How To Convert Numeric Values to Integers in SQL Server Transact-SQL? Sometimes you need to round a ...