jsonb_jsonpath.sql 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. select jsonb '{"a": 12}' @? '$';
  2. select jsonb '{"a": 12}' @? '1';
  3. select jsonb '{"a": 12}' @? '$.a.b';
  4. select jsonb '{"a": 12}' @? '$.b';
  5. select jsonb '{"a": 12}' @? '$.a + 2';
  6. select jsonb '{"a": 12}' @? '$.b + 2';
  7. select jsonb '{"a": {"a": 12}}' @? '$.a.a';
  8. select jsonb '{"a": {"a": 12}}' @? '$.*.a';
  9. select jsonb '{"b": {"a": 12}}' @? '$.*.a';
  10. select jsonb '{"b": {"a": 12}}' @? '$.*.b';
  11. select jsonb '{"b": {"a": 12}}' @? 'strict $.*.b';
  12. select jsonb '{}' @? '$.*';
  13. select jsonb '{"a": 1}' @? '$.*';
  14. select jsonb '{"a": {"b": 1}}' @? 'lax $.**{1}';
  15. select jsonb '{"a": {"b": 1}}' @? 'lax $.**{2}';
  16. select jsonb '{"a": {"b": 1}}' @? 'lax $.**{3}';
  17. select jsonb '[]' @? '$[*]';
  18. select jsonb '[1]' @? '$[*]';
  19. select jsonb '[1]' @? '$[1]';
  20. select jsonb '[1]' @? 'strict $[1]';
  21. select jsonb '[1]' @? 'lax $[10000000000000000]';
  22. select jsonb '[1]' @? 'strict $[10000000000000000]';
  23. select jsonb '[1]' @? '$[0]';
  24. select jsonb '[1]' @? '$[0.3]';
  25. select jsonb '[1]' @? '$[0.5]';
  26. select jsonb '[1]' @? '$[0.9]';
  27. select jsonb '[1]' @? '$[1.2]';
  28. select jsonb '[1]' @? 'strict $[1.2]';
  29. select jsonb '{"a": [1,2,3], "b": [3,4,5]}' @? '$ ? (@.a[*] > @.b[*])';
  30. select jsonb '{"a": [1,2,3], "b": [3,4,5]}' @? '$ ? (@.a[*] >= @.b[*])';
  31. select jsonb '{"a": [1,2,3], "b": [3,4,"5"]}' @? '$ ? (@.a[*] >= @.b[*])';
  32. select jsonb '{"a": [1,2,3], "b": [3,4,"5"]}' @? 'strict $ ? (@.a[*] >= @.b[*])';
  33. select jsonb '{"a": [1,2,3], "b": [3,4,null]}' @? '$ ? (@.a[*] >= @.b[*])';
  34. select jsonb '1' @? '$ ? ((@ == "1") is unknown)';
  35. select jsonb '1' @? '$ ? ((@ == 1) is unknown)';
  36. select jsonb '[{"a": 1}, {"a": 2}]' @? '$[0 to 1] ? (@.a > 1)';
  37. select jsonb '{"a": {"b": 1}}' @? '$.**.b ? ( @ > 0)';
  38. select jsonb '{"a": {"b": 1}}' @? '$.**{0}.b ? ( @ > 0)';
  39. select jsonb '{"a": {"b": 1}}' @? '$.**{1}.b ? ( @ > 0)';
  40. select jsonb '{"a": {"b": 1}}' @? '$.**{0 to last}.b ? ( @ > 0)';
  41. select jsonb '{"a": {"b": 1}}' @? '$.**{1 to last}.b ? ( @ > 0)';
  42. select jsonb '{"a": {"b": 1}}' @? '$.**{1 to 2}.b ? ( @ > 0)';
  43. select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**.b ? ( @ > 0)';
  44. select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{0}.b ? ( @ > 0)';
  45. select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{1}.b ? ( @ > 0)';
  46. select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{0 to last}.b ? ( @ > 0)';
  47. select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{1 to last}.b ? ( @ > 0)';
  48. select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{1 to 2}.b ? ( @ > 0)';
  49. select jsonb '{"a": {"c": {"b": 1}}}' @? '$.**{2 to 3}.b ? ( @ > 0)';
  50. select jsonb '{"a": 1, "b":1}' @? '$ ? (@.a == @.b)';
  51. select jsonb '{"c": {"a": 1, "b":1}}' @? '$ ? (@.a == @.b)';
  52. select jsonb '{"c": {"a": 1, "b":1}}' @? '$.c ? (@.a == @.b)';
  53. select jsonb '{"c": {"a": 1, "b":1}}' @? '$.c ? ($.c.a == @.b)';
  54. select jsonb '{"c": {"a": 1, "b":1}}' @? '$.* ? (@.a == @.b)';
  55. select jsonb '{"a": 1, "b":1}' @? '$.** ? (@.a == @.b)';
  56. select jsonb '{"c": {"a": 1, "b":1}}' @? '$.** ? (@.a == @.b)';
  57. select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == - 1)';
  58. select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == -1)';
  59. select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == -@.b)';
  60. select jsonb '{"c": {"a": -1, "b":1}}' @? '$.** ? (@.a == - @.b)';
  61. select jsonb '{"c": {"a": 0, "b":1}}' @? '$.** ? (@.a == 1 - @.b)';
  62. select jsonb '{"c": {"a": 2, "b":1}}' @? '$.** ? (@.a == 1 - - @.b)';
  63. select jsonb '{"c": {"a": 0, "b":1}}' @? '$.** ? (@.a == 1 - +@.b)';
  64. select jsonb '[1,2,3]' @? '$ ? (+@[*] > +2)';
  65. select jsonb '[1,2,3]' @? '$ ? (+@[*] > +3)';
  66. select jsonb '[1,2,3]' @? '$ ? (-@[*] < -2)';
  67. select jsonb '[1,2,3]' @? '$ ? (-@[*] < -3)';
  68. select jsonb '1' @? '$ ? ($ > 0)';
  69. select jsonb '["1",2,0,3]' @? '-$[*]';
  70. select jsonb '[1,"2",0,3]' @? '-$[*]';
  71. select jsonb '["1",2,0,3]' @? 'strict -$[*]';
  72. select jsonb '[1,"2",0,3]' @? 'strict -$[*]';
  73. select jsonb '2' @? '$ == "2"';
  74. select jsonb '2' @@ '$ > 1';
  75. select jsonb '2' @@ '$ <= 1';
  76. select jsonb '2' @@ '$ == "2"';
  77. select jsonb '2' @@ '1';
  78. select jsonb '{}' @@ '$';
  79. select jsonb '[]' @@ '$';
  80. select jsonb '[1,2,3]' @@ '$[*]';
  81. select jsonb '[]' @@ '$[*]';
  82. select jsonb '{"a": 1, "b": [1, 2]}' @? 'lax $.keyvalue()';
  83. select jsonb '{"a": 1, "b": [1, 2]}' @? 'lax $.keyvalue().key';
  84. select jsonb '"10-03-2017"' @? '$.datetime("dd-mm-yyyy")';
  85. set time zone '+00';
  86. set time zone '+10';
  87. set time zone default;
  88. set time zone '+00';
  89. set time zone default;
  90. SELECT jsonb '[{"a": 1}, {"a": 2}]' @? '$[*].a ? (@ > 1)';
  91. SELECT jsonb '[{"a": 1}, {"a": 2}]' @? '$[*] ? (@.a > 2)';
  92. SELECT jsonb '[{"a": 1}, {"a": 2}]' @@ '$[*].a > 1';
  93. SELECT jsonb '[{"a": 1}, {"a": 2}]' @@ '$[*].a > 2';