Przejdź do głównej zawartości

Sprawdza, czy wskazane wyrażenie ścieżki JSON spełnia określone warunki w danych JSON. Uwaga: operator @@ jest synonimem tej funkcji. Więcej informacji znajdziesz w sekcji Operatory JSON.

func.json_path_match(<json_data>, <json_path_expression)
func.json_path_match(func.parse_json('{"a":1,"b":[1,2,3]}'), '$.a == 1')
┌──────────────────────────────────────────────────────────────────────────┐
│ func.json_path_match(func.parse_json('{"a":1,"b":[1,2,3]}'), '$.a == 1') │
├──────────────────────────────────────────────────────────────────────────┤
│ true │
└──────────────────────────────────────────────────────────────────────────┘
func.json_path_match(func.parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] > 1')
┌────────────────────────────────────────────────────────────────────────────┐
│ func.json_path_match(func.parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] > 1') │
├────────────────────────────────────────────────────────────────────────────┤
│ false │
└────────────────────────────────────────────────────────────────────────────┘
JSON_PATH_MATCH(<json_data>, <json_path_expression>)
  • json_data: określa dane JSON, które chcesz zbadać. Może to być obiekt JSON lub tablica.
  • json_path_expression: określa warunki do sprawdzenia w danych JSON. Wyrażenie to opisuje konkretną ścieżkę lub kryteria do dopasowania, na przykład weryfikację, czy wartości określonych pól w strukturze JSON spełniają pewne warunki. Symbol $ reprezentuje korzeń danych JSON. Służy do rozpoczęcia wyrażenia ścieżki i wskazuje obiekt najwyższego poziomu w strukturze JSON.

Funkcja zwraca:

  • true, jeśli wskazane wyrażenie ścieżki JSON spełnia warunki w danych JSON.
  • false, jeśli wskazane wyrażenie ścieżki JSON nie spełnia warunków w danych JSON.
  • NULL, jeśli json_data lub json_path_expression ma wartość NULL lub jest nieprawidłowe.
-- Check if the value at JSON path $.a is equal to 1
SELECT JSON_PATH_MATCH(parse_json('{"a":1,"b":[1,2,3]}'), '$.a == 1');
┌────────────────────────────────────────────────────────────────┐
│ json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.a == 1') │
├────────────────────────────────────────────────────────────────┤
│ true │
└────────────────────────────────────────────────────────────────┘
-- Check if the first element in the array at JSON path $.b is greater than 1
SELECT JSON_PATH_MATCH(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] > 1');
┌──────────────────────────────────────────────────────────────────┐
│ json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] > 1') │
├──────────────────────────────────────────────────────────────────┤
│ false │
└──────────────────────────────────────────────────────────────────┘
-- Check if any element in the array at JSON path $.b
-- from the second one to the last are greater than or equal to 2
SELECT JSON_PATH_MATCH(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[1 to last] >= 2');
┌───────────────────────────────────────────────────────────────────────────┐
│ json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[1 to last] >= 2') │
├───────────────────────────────────────────────────────────────────────────┤
│ true │
└───────────────────────────────────────────────────────────────────────────┘
-- NULL is returned if either the json_data or json_path_expression is NULL or invalid.
SELECT JSON_PATH_MATCH(parse_json('{"a":1,"b":[1,2,3]}'), NULL);
┌──────────────────────────────────────────────────────────┐
│ json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), null) │
├──────────────────────────────────────────────────────────┤
│ NULL │
└──────────────────────────────────────────────────────────┘
SELECT JSON_PATH_MATCH(NULL, '$.a == 1');
┌───────────────────────────────────┐
│ json_path_match(null, '$.a == 1') │
├───────────────────────────────────┤
│ NULL │
└───────────────────────────────────┘