MySQL JSON trích dẫn đơn

Google Standard SQL cho BigQuery hỗ trợ các chức năng sau, có thể truy xuất và chuyển đổi dữ liệu JSON

Tổng quan về chức năng

Các hàm trích xuất JSON tiêu chuẩn [được khuyến nghị]

Các chức năng sau sử dụng dấu ngoặc kép để thoát các ký tự không hợp lệ.

JSON_EXTRACT[json_expr, json_path]
27

Hành vi này phù hợp với tiêu chuẩn ANSI

Hàm JSON Mô tảKiểu trả vềTrích xuất một giá trị JSON, chẳng hạn như một mảng hoặc đối tượng hoặc một giá trị vô hướng JSON, chẳng hạn như một chuỗi, số hoặc boolean. Định dạng JSON
JSON_EXTRACT[json_expr, json_path]
29 hoặc
JSON_EXTRACT[json_expr, json_path]
30Trích xuất một giá trị vô hướng. Một giá trị vô hướng có thể đại diện cho một chuỗi, số hoặc boolean. Loại bỏ các trích dẫn ngoài cùng và bỏ qua các giá trị. Trả về SQL
JSON_EXTRACT[json_expr, json_path]
32 nếu một giá trị không vô hướng được chọn.
JSON_EXTRACT[json_expr, json_path]
29Trích xuất một mảng các giá trị JSON, chẳng hạn như mảng hoặc đối tượng và các giá trị vô hướng JSON, chẳng hạn như chuỗi, số và booleans.
JSON_EXTRACT[json_expr, json_path]
35 hoặc
JSON_EXTRACT[json_expr, json_path]
36Trích xuất một mảng các giá trị vô hướng. Một giá trị vô hướng có thể đại diện cho một chuỗi, số hoặc boolean. Loại bỏ các trích dẫn ngoài cùng và bỏ qua các giá trị. Trả về một SQL
JSON_EXTRACT[json_expr, json_path]
32 nếu giá trị được chọn không phải là một mảng hoặc không phải là một mảng chỉ chứa các giá trị vô hướng.
JSON_EXTRACT[json_expr, json_path]
39

Các hàm trích xuất JSON kế thừa

Các chức năng sau sử dụng dấu nháy đơn và dấu ngoặc đơn để thoát các ký tự không hợp lệ.

JSON_EXTRACT[json_expr, json_path]
40

Mặc dù các hàm này được Google Standard SQL hỗ trợ, chúng tôi khuyên bạn nên sử dụng các hàm trong bảng trước

Hàm JSON Mô tảKiểu trả vềTrích xuất một giá trị JSON, chẳng hạn như một mảng hoặc đối tượng hoặc một giá trị vô hướng JSON, chẳng hạn như một chuỗi, số hoặc boolean. Định dạng JSON
JSON_EXTRACT[json_expr, json_path]
29 hoặc
JSON_EXTRACT[json_expr, json_path]
30Trích xuất một giá trị vô hướng. Một giá trị vô hướng có thể đại diện cho một chuỗi, số hoặc boolean. Loại bỏ các trích dẫn ngoài cùng và bỏ qua các giá trị. Trả về SQL
JSON_EXTRACT[json_expr, json_path]
32 nếu một giá trị không vô hướng được chọn.
JSON_EXTRACT[json_expr, json_path]
29Trích xuất một mảng các giá trị JSON, chẳng hạn như mảng hoặc đối tượng và các giá trị vô hướng JSON, chẳng hạn như chuỗi, số và booleans.
JSON_EXTRACT[json_expr, json_path]
35 hoặc
JSON_EXTRACT[json_expr, json_path]
36Trích xuất một mảng các giá trị vô hướng. Một giá trị vô hướng có thể đại diện cho một chuỗi, số hoặc boolean. Loại bỏ các trích dẫn ngoài cùng và bỏ qua các giá trị. Trả về một SQL
JSON_EXTRACT[json_expr, json_path]
32 nếu giá trị được chọn không phải là một mảng hoặc không phải là một mảng chỉ chứa các giá trị vô hướng.
JSON_EXTRACT[json_expr, json_path]
39

Các hàm JSON khác

Hàm JSONMô tảKiểu trả vềNhận một chuỗi có định dạng JSON và trả về một giá trị JSON.
JSON_EXTRACT[json_expr, json_path]
30Nhận một giá trị SQL và trả về một giá trị JSON.
JSON_EXTRACT[json_expr, json_path]
30Nhận một giá trị SQL và trả về một biểu diễn chuỗi có định dạng JSON của giá trị. Định dạng JSON
JSON_EXTRACT[json_expr, json_path]
29Trích xuất một chuỗi từ JSON.
JSON_EXTRACT[json_expr, json_path]
29Trích xuất một boolean từ JSON.
JSON_EXTRACT[json_expr, json_path]
61Trích xuất số nguyên 64 bit từ JSON.
JSON_EXTRACT[json_expr, json_path]
63Trích xuất số dấu phẩy động 64 bit từ JSON.
JSON_EXTRACT[json_expr, json_path]
65Trả về loại giá trị JSON ngoài cùng dưới dạng chuỗi.
JSON_EXTRACT[json_expr, json_path]
29

JSON_EXTRACT[json_expr, json_path]
41

JSON_EXTRACT[json_string_expr, json_path]
JSON_EXTRACT[json_expr, json_path]

Sự miêu tả

Trích xuất một giá trị JSON, chẳng hạn như một mảng hoặc đối tượng hoặc một giá trị vô hướng JSON, chẳng hạn như một chuỗi, số hoặc boolean. Nếu khóa JSON sử dụng các ký tự không hợp lệ, thì bạn có thể thoát các ký tự đó bằng dấu ngoặc đơn và dấu ngoặc đơn

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một chuỗi có định dạng JSON. Ví dụ

    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    

    Trích xuất SQL

    JSON_EXTRACT[json_expr, json_path]
    
    32 khi gặp chuỗi định dạng JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72. Ví dụ

    SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
    
  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
    

    Trích xuất một JSON

    JSON_EXTRACT[json_expr, json_path]
    
    72 khi gặp một JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72

    SELECT JSON_EXTRACT[JSON 'null', "$"] -- Returns a JSON 'null'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    76. Các. Điều này xác định dữ liệu mà bạn muốn lấy từ đầu vào

loại trả lại

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một định dạng JSON
    JSON_EXTRACT[json_expr, json_path]
    
    29
  • JSON_EXTRACT[json_expr, json_path]
    
    73.
    JSON_EXTRACT[json_expr, json_path]
    
    30

ví dụ

Trong ví dụ sau, dữ liệu JSON được trích xuất và trả về dưới dạng JSON

SELECT
  JSON_EXTRACT[JSON '{"class":{"students":[{"id":5},{"id":12}]}}', '$.class']
  AS json_data;

+-----------------------------------+
| json_data                         |
+-----------------------------------+
| {"students":[{"id":5},{"id":12}]} |
+-----------------------------------+

Trong các ví dụ sau, dữ liệu JSON được trích xuất và trả về dưới dạng chuỗi có định dạng JSON

SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
JSON_EXTRACT[json_expr, json_path]
0_______0_______1
JSON_EXTRACT[json_expr, json_path]
2

JSON_EXTRACT[json_expr, json_path]
28

JSON_EXTRACT[json_expr, json_path]
3
JSON_EXTRACT[json_expr, json_path]
4

Sự miêu tả

Trích xuất một giá trị JSON, chẳng hạn như một mảng hoặc đối tượng hoặc một giá trị vô hướng JSON, chẳng hạn như một chuỗi, số hoặc boolean. Nếu khóa JSON sử dụng các ký tự không hợp lệ thì bạn có thể thoát các ký tự đó bằng dấu ngoặc kép

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một chuỗi có định dạng JSON. Ví dụ

    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    

    Trích xuất SQL

    JSON_EXTRACT[json_expr, json_path]
    
    32 khi gặp chuỗi định dạng JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72. Ví dụ

    JSON_EXTRACT[json_expr, json_path]
    
    6
  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
    

    Trích xuất một JSON

    JSON_EXTRACT[json_expr, json_path]
    
    72 khi gặp một JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72

    JSON_EXTRACT[json_expr, json_path]
    
    8
  • JSON_EXTRACT[json_expr, json_path]
    
    76. Các. Điều này xác định dữ liệu mà bạn muốn lấy từ đầu vào

loại trả lại

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một định dạng JSON
    JSON_EXTRACT[json_expr, json_path]
    
    29
  • JSON_EXTRACT[json_expr, json_path]
    
    73.
    JSON_EXTRACT[json_expr, json_path]
    
    30

ví dụ

Trong ví dụ sau, dữ liệu JSON được trích xuất và trả về dưới dạng JSON

JSON_EXTRACT[json_expr, json_path]
9

Trong các ví dụ sau, dữ liệu JSON được trích xuất và trả về dưới dạng chuỗi có định dạng JSON

'{"class" : {"students" : [{"name" : "Jane"}]}}'
0_______30_______1
'{"class" : {"students" : [{"name" : "Jane"}]}}'
2
'{"class" : {"students" : [{"name" : "Jane"}]}}'
3
'{"class" : {"students" : [{"name" : "Jane"}]}}'
4
'{"class" : {"students" : [{"name" : "Jane"}]}}'
5

JSON_EXTRACT[json_expr, json_path]
44

'{"class" : {"students" : [{"name" : "Jane"}]}}'
6_______30_______7

Sự miêu tả

Trích xuất một giá trị vô hướng và sau đó trả về nó dưới dạng một chuỗi. Một giá trị vô hướng có thể đại diện cho một chuỗi, số hoặc boolean. Loại bỏ các trích dẫn ngoài cùng và bỏ qua các giá trị trả về. Nếu khóa JSON sử dụng các ký tự không hợp lệ, thì bạn có thể thoát các ký tự đó bằng dấu ngoặc đơn và dấu ngoặc đơn

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một chuỗi có định dạng JSON. Ví dụ

    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    76. Các. Điều này xác định dữ liệu mà bạn muốn lấy từ đầu vào. Nếu thông số tùy chọn này không được cung cấp thì ký hiệu JSONPath
    JSON_EXTRACT[json_expr, json_path]
    
    97 sẽ được áp dụng, nghĩa là tất cả dữ liệu được phân tích

    Nếu

    JSON_EXTRACT[json_expr, json_path]
    
    76 trả về một JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72 hoặc một giá trị không vô hướng [nói cách khác, nếu
    JSON_EXTRACT[json_expr, json_path]
    
    76 đề cập đến một đối tượng hoặc một mảng], thì một SQL
    JSON_EXTRACT[json_expr, json_path]
    
    32 được trả về

loại trả lại

JSON_EXTRACT[json_expr, json_path]
29

ví dụ

Trong ví dụ sau,

'{"class" : {"students" : [{"name" : "Jane"}]}}'
03 được trích xuất

SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
0

Ví dụ sau so sánh cách kết quả được trả về cho các hàm

JSON_EXTRACT[json_expr, json_path]
41 và
JSON_EXTRACT[json_expr, json_path]
44

SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
1
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
2

Trong trường hợp khóa JSON sử dụng các ký tự JSONPath không hợp lệ, bạn có thể thoát các ký tự đó bằng cách sử dụng dấu ngoặc đơn và dấu ngoặc đơn,

'{"class" : {"students" : [{"name" : "Jane"}]}}'
06. Ví dụ

SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
3

JSON_EXTRACT[json_expr, json_path]
31

SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
4
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
5

Sự miêu tả

Trích xuất một giá trị vô hướng và sau đó trả về nó dưới dạng một chuỗi. Một giá trị vô hướng có thể đại diện cho một chuỗi, số hoặc boolean. Loại bỏ các trích dẫn ngoài cùng và bỏ qua các giá trị trả về. Nếu khóa JSON sử dụng các ký tự không hợp lệ thì bạn có thể thoát các ký tự đó bằng dấu ngoặc kép

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một chuỗi có định dạng JSON. Ví dụ

    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    76. Các. Điều này xác định dữ liệu mà bạn muốn lấy từ đầu vào. Nếu thông số tùy chọn này không được cung cấp thì ký hiệu JSONPath
    JSON_EXTRACT[json_expr, json_path]
    
    97 sẽ được áp dụng, nghĩa là tất cả dữ liệu được phân tích

    Nếu

    JSON_EXTRACT[json_expr, json_path]
    
    76 trả về một JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72 hoặc một giá trị không vô hướng [nói cách khác, nếu
    JSON_EXTRACT[json_expr, json_path]
    
    76 đề cập đến một đối tượng hoặc một mảng], thì một SQL
    JSON_EXTRACT[json_expr, json_path]
    
    32 được trả về

loại trả lại

JSON_EXTRACT[json_expr, json_path]
29

ví dụ

Trong ví dụ sau, dữ liệu JSON được trích xuất và trả về dưới dạng giá trị vô hướng

SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
8

Ví dụ sau so sánh cách kết quả được trả về cho các hàm

JSON_EXTRACT[json_expr, json_path]
28 và
JSON_EXTRACT[json_expr, json_path]
31

SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
9____35_______0

Trong trường hợp khóa JSON sử dụng các ký tự JSONPath không hợp lệ, bạn có thể thoát các ký tự đó bằng dấu ngoặc kép. Ví dụ

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
1

JSON_EXTRACT[json_expr, json_path]
47

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
2
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
3

Sự miêu tả

Trích xuất một mảng các giá trị JSON, chẳng hạn như mảng hoặc đối tượng và các giá trị vô hướng JSON, chẳng hạn như chuỗi, số và booleans. Nếu khóa JSON sử dụng các ký tự không hợp lệ, thì bạn có thể thoát các ký tự đó bằng dấu ngoặc đơn và dấu ngoặc đơn

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một chuỗi có định dạng JSON. Ví dụ

    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    76. Các. Điều này xác định dữ liệu mà bạn muốn lấy từ đầu vào. Nếu thông số tùy chọn này không được cung cấp thì ký hiệu JSONPath
    JSON_EXTRACT[json_expr, json_path]
    
    97 sẽ được áp dụng, nghĩa là tất cả dữ liệu được phân tích

loại trả lại

  • JSON_EXTRACT[json_expr, json_path]
    
    70.
    JSON_EXTRACT[json_expr, json_path]
    
    35
  • JSON_EXTRACT[json_expr, json_path]
    
    73.
    JSON_EXTRACT[json_expr, json_path]
    
    36

ví dụ

Thao tác này trích xuất các mục trong JSON thành một mảng gồm _______30 giá trị

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
6

Thao tác này trích xuất các mục trong chuỗi có định dạng JSON thành một mảng chuỗi

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
7

Điều này trích xuất một mảng chuỗi và chuyển đổi nó thành một mảng số nguyên

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
8

Điều này trích xuất các giá trị chuỗi trong một chuỗi có định dạng JSON thành một mảng

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
9

Điều này chỉ trích xuất các mục trong thuộc tính

'{"class" : {"students" : [{"name" : "Jane"}]}}'
29 thành một mảng

SELECT JSON_EXTRACT[JSON 'null', "$"] -- Returns a JSON 'null'
0

Đây là tương đương

SELECT JSON_EXTRACT[JSON 'null', "$"] -- Returns a JSON 'null'
1

Trong trường hợp khóa JSON sử dụng các ký tự JSONPath không hợp lệ, bạn có thể thoát các ký tự đó bằng cách sử dụng dấu ngoặc đơn và dấu ngoặc đơn,

'{"class" : {"students" : [{"name" : "Jane"}]}}'
06. Ví dụ

SELECT JSON_EXTRACT[JSON 'null', "$"] -- Returns a JSON 'null'
2

Các ví dụ sau khám phá cách xử lý các yêu cầu không hợp lệ và mảng trống

  • Nếu JSONPath không hợp lệ, sẽ xảy ra lỗi
  • Nếu một chuỗi định dạng JSON không hợp lệ, đầu ra là NULL
  • Có thể có các mảng trống trong chuỗi định dạng JSON
SELECT JSON_EXTRACT[JSON 'null', "$"] -- Returns a JSON 'null'
3

JSON_EXTRACT[json_expr, json_path]
34

SELECT JSON_EXTRACT[JSON 'null', "$"] -- Returns a JSON 'null'
4
SELECT JSON_EXTRACT[JSON 'null', "$"] -- Returns a JSON 'null'
5

Sự miêu tả

Trích xuất một mảng các giá trị JSON, chẳng hạn như mảng hoặc đối tượng và các giá trị vô hướng JSON, chẳng hạn như chuỗi, số và booleans. Nếu khóa JSON sử dụng các ký tự không hợp lệ thì bạn có thể thoát các ký tự đó bằng dấu ngoặc kép

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một chuỗi có định dạng JSON. Ví dụ

    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    76. Các. Điều này xác định dữ liệu mà bạn muốn lấy từ đầu vào. Nếu thông số tùy chọn này không được cung cấp thì ký hiệu JSONPath
    JSON_EXTRACT[json_expr, json_path]
    
    97 sẽ được áp dụng, nghĩa là tất cả dữ liệu được phân tích

loại trả lại

  • JSON_EXTRACT[json_expr, json_path]
    
    70.
    JSON_EXTRACT[json_expr, json_path]
    
    35
  • JSON_EXTRACT[json_expr, json_path]
    
    73.
    JSON_EXTRACT[json_expr, json_path]
    
    36

ví dụ

Thao tác này trích xuất các mục trong JSON thành một mảng gồm _______30 giá trị

SELECT JSON_EXTRACT[JSON 'null', "$"] -- Returns a JSON 'null'
8

Thao tác này trích xuất các mục trong chuỗi có định dạng JSON thành một mảng chuỗi

SELECT JSON_EXTRACT[JSON 'null', "$"] -- Returns a JSON 'null'
9

Điều này trích xuất một mảng chuỗi và chuyển đổi nó thành một mảng số nguyên

SELECT
  JSON_EXTRACT[JSON '{"class":{"students":[{"id":5},{"id":12}]}}', '$.class']
  AS json_data;

+-----------------------------------+
| json_data                         |
+-----------------------------------+
| {"students":[{"id":5},{"id":12}]} |
+-----------------------------------+
0

Điều này trích xuất các giá trị chuỗi trong một chuỗi có định dạng JSON thành một mảng

SELECT
  JSON_EXTRACT[JSON '{"class":{"students":[{"id":5},{"id":12}]}}', '$.class']
  AS json_data;

+-----------------------------------+
| json_data                         |
+-----------------------------------+
| {"students":[{"id":5},{"id":12}]} |
+-----------------------------------+
1

Điều này chỉ trích xuất các mục trong thuộc tính

'{"class" : {"students" : [{"name" : "Jane"}]}}'
29 thành một mảng

SELECT
  JSON_EXTRACT[JSON '{"class":{"students":[{"id":5},{"id":12}]}}', '$.class']
  AS json_data;

+-----------------------------------+
| json_data                         |
+-----------------------------------+
| {"students":[{"id":5},{"id":12}]} |
+-----------------------------------+
2

Đây là tương đương

SELECT
  JSON_EXTRACT[JSON '{"class":{"students":[{"id":5},{"id":12}]}}', '$.class']
  AS json_data;

+-----------------------------------+
| json_data                         |
+-----------------------------------+
| {"students":[{"id":5},{"id":12}]} |
+-----------------------------------+
3

Trong trường hợp khóa JSON sử dụng các ký tự JSONPath không hợp lệ, bạn có thể thoát các ký tự đó bằng dấu ngoặc kép.

'{"class" : {"students" : [{"name" : "Jane"}]}}'
42. Ví dụ

SELECT
  JSON_EXTRACT[JSON '{"class":{"students":[{"id":5},{"id":12}]}}', '$.class']
  AS json_data;

+-----------------------------------+
| json_data                         |
+-----------------------------------+
| {"students":[{"id":5},{"id":12}]} |
+-----------------------------------+
4

Các ví dụ sau đây cho thấy cách xử lý các yêu cầu không hợp lệ và mảng trống

SELECT
  JSON_EXTRACT[JSON '{"class":{"students":[{"id":5},{"id":12}]}}', '$.class']
  AS json_data;

+-----------------------------------+
| json_data                         |
+-----------------------------------+
| {"students":[{"id":5},{"id":12}]} |
+-----------------------------------+
5

JSON_EXTRACT[json_expr, json_path]
50

SELECT
  JSON_EXTRACT[JSON '{"class":{"students":[{"id":5},{"id":12}]}}', '$.class']
  AS json_data;

+-----------------------------------+
| json_data                         |
+-----------------------------------+
| {"students":[{"id":5},{"id":12}]} |
+-----------------------------------+
6_______44_______7

Sự miêu tả

Trích xuất một mảng các giá trị vô hướng và trả về một mảng các giá trị vô hướng có định dạng chuỗi. Một giá trị vô hướng có thể đại diện cho một chuỗi, số hoặc boolean. Nếu khóa JSON sử dụng các ký tự không hợp lệ, bạn có thể thoát khỏi các ký tự đó bằng cách sử dụng dấu ngoặc đơn và dấu ngoặc đơn

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một chuỗi có định dạng JSON. Ví dụ

    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    76. Các. Điều này xác định dữ liệu mà bạn muốn lấy từ đầu vào. Nếu thông số tùy chọn này không được cung cấp thì ký hiệu JSONPath
    JSON_EXTRACT[json_expr, json_path]
    
    97 sẽ được áp dụng, nghĩa là tất cả dữ liệu được phân tích

Hãy cẩn thận

  • Một JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72 trong mảng đầu vào tạo ra một SQL
    JSON_EXTRACT[json_expr, json_path]
    
    32 làm đầu ra cho JSON đó
    JSON_EXTRACT[json_expr, json_path]
    
    72. Nếu đầu ra chứa một phần tử mảng
    JSON_EXTRACT[json_expr, json_path]
    
    32, thì sẽ xảy ra lỗi vì đầu ra cuối cùng không thể là một mảng có giá trị
    JSON_EXTRACT[json_expr, json_path]
    
    32
  • Nếu một JSONPath khớp với một mảng chứa các đối tượng vô hướng và một JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72, thì đầu ra của hàm phải được chuyển đổi vì đầu ra cuối cùng không thể là một mảng có các giá trị
    JSON_EXTRACT[json_expr, json_path]
    
    32

loại trả lại

JSON_EXTRACT[json_expr, json_path]
39

ví dụ

Điều này trích xuất các mục trong JSON thành một mảng chuỗi

SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
0

Ví dụ sau so sánh cách kết quả được trả về cho các hàm

JSON_EXTRACT[json_expr, json_path]
47 và
JSON_EXTRACT[json_expr, json_path]
50

SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
1

Thao tác này trích xuất các mục trong chuỗi có định dạng JSON thành một mảng chuỗi

SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
2

Điều này trích xuất một mảng chuỗi và chuyển đổi nó thành một mảng số nguyên

SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
3

Đây là tương đương

SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
4

Trong trường hợp khóa JSON sử dụng các ký tự JSONPath không hợp lệ, bạn có thể thoát các ký tự đó bằng dấu ngoặc đơn và dấu ngoặc đơn.

'{"class" : {"students" : [{"name" : "Jane"}]}}'
06. Ví dụ

SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
5

Các ví dụ sau khám phá cách xử lý các yêu cầu không hợp lệ và mảng trống

SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
6

JSON_EXTRACT[json_expr, json_path]
37

SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
7
SELECT JSON_EXTRACT[json_text, '$'] AS json_text_string
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------------------------------------------------+
| json_text_string                                          |
+-----------------------------------------------------------+
| {"class":{"students":[{"name":"Jane"}]}}                  |
| {"class":{"students":[]}}                                 |
| {"class":{"students":[{"name":"John"},{"name":"Jamie"}]}} |
+-----------------------------------------------------------+
8

Sự miêu tả

Trích xuất một mảng các giá trị vô hướng và trả về một mảng các giá trị vô hướng có định dạng chuỗi. Một giá trị vô hướng có thể đại diện cho một chuỗi, số hoặc boolean. Nếu khóa JSON sử dụng các ký tự không hợp lệ, bạn có thể thoát các ký tự đó bằng dấu ngoặc kép

  • JSON_EXTRACT[json_expr, json_path]
    
    70. Một chuỗi có định dạng JSON. Ví dụ

    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
  • JSON_EXTRACT[json_expr, json_path]
    
    76. Các. Điều này xác định dữ liệu mà bạn muốn lấy từ đầu vào. Nếu thông số tùy chọn này không được cung cấp thì ký hiệu JSONPath
    JSON_EXTRACT[json_expr, json_path]
    
    97 sẽ được áp dụng, nghĩa là tất cả dữ liệu được phân tích

Hãy cẩn thận

  • Một JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72 trong mảng đầu vào tạo ra một SQL
    JSON_EXTRACT[json_expr, json_path]
    
    32 làm đầu ra cho JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72. Nếu đầu ra chứa một phần tử mảng
    JSON_EXTRACT[json_expr, json_path]
    
    32, thì sẽ xảy ra lỗi vì đầu ra cuối cùng không thể là một mảng có giá trị
    JSON_EXTRACT[json_expr, json_path]
    
    32
  • Nếu một JSONPath khớp với một mảng chứa các đối tượng vô hướng và một JSON
    JSON_EXTRACT[json_expr, json_path]
    
    72, thì đầu ra của hàm phải được chuyển đổi vì đầu ra cuối cùng không thể là một mảng có các giá trị
    JSON_EXTRACT[json_expr, json_path]
    
    32

loại trả lại

JSON_EXTRACT[json_expr, json_path]
39

ví dụ

Điều này trích xuất các mục trong JSON thành một mảng chuỗi

SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
1

Ví dụ sau so sánh cách kết quả được trả về cho các hàm

JSON_EXTRACT[json_expr, json_path]
34 và
JSON_EXTRACT[json_expr, json_path]
37

SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
2

Thao tác này trích xuất các mục trong chuỗi có định dạng JSON thành một mảng chuỗi

SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
3

Điều này trích xuất một mảng chuỗi và chuyển đổi nó thành một mảng số nguyên

SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
4

Đây là tương đương

SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
5

Trong trường hợp khóa JSON sử dụng các ký tự JSONPath không hợp lệ, bạn có thể thoát các ký tự đó bằng dấu ngoặc kép.

'{"class" : {"students" : [{"name" : "Jane"}]}}'
42. Ví dụ

SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
6

Các ví dụ sau khám phá cách xử lý các yêu cầu không hợp lệ và mảng trống

SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
7

JSON_EXTRACT[json_expr, json_path]
53

SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
8

Sự miêu tả

Nhận một giá trị SQL

JSON_EXTRACT[json_expr, json_path]
29 và trả về một giá trị SQL
JSON_EXTRACT[json_expr, json_path]
30. Giá trị
JSON_EXTRACT[json_expr, json_path]
29 đại diện cho giá trị JSON có định dạng chuỗi

Hàm này hỗ trợ một đối số có tên bắt buộc tùy chọn có tên là

'{"class" : {"students" : [{"name" : "Jane"}]}}'
79 xác định cách xử lý các số không thể lưu trữ trong giá trị
JSON_EXTRACT[json_expr, json_path]
30 mà không làm giảm độ chính xác. Nếu được sử dụng,
'{"class" : {"students" : [{"name" : "Jane"}]}}'
79 phải bao gồm một trong các giá trị này

  • '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
    82. Chỉ chấp nhận các số có thể được lưu trữ mà không làm giảm độ chính xác. Nếu gặp phải một số không thể lưu trữ mà không làm mất độ chính xác, hàm sẽ đưa ra lỗi
  • '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
    83. Nếu gặp phải một số không thể lưu trữ mà không làm mất độ chính xác, hãy thử làm tròn số đó thành một số có thể được lưu trữ mà không làm mất độ chính xác. Nếu không làm tròn số thì hàm báo lỗi

Nếu

'{"class" : {"students" : [{"name" : "Jane"}]}}'
79 không được sử dụng, chức năng ngầm định bao gồm
'{"class" : {"students" : [{"name" : "Jane"}]}}'
85. Nếu một số xuất hiện trong một đối tượng hoặc mảng JSON, thì đối số
'{"class" : {"students" : [{"name" : "Jane"}]}}'
79 được áp dụng cho số đó trong đối tượng hoặc mảng

Các số từ các miền sau có thể được lưu trữ trong JSON mà không làm giảm độ chính xác

  • Số nguyên có dấu/không dấu 64 bit, chẳng hạn như
    JSON_EXTRACT[json_expr, json_path]
    
    63
  • JSON_EXTRACT[json_expr, json_path]
    
    65

loại trả lại

JSON_EXTRACT[json_expr, json_path]
30

ví dụ

Trong ví dụ sau, một chuỗi có định dạng JSON được chuyển đổi thành

JSON_EXTRACT[json_expr, json_path]
30

SELECT JSON_EXTRACT[json_text, '$.class.students[0]'] AS first_student
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-----------------+
| first_student   |
+-----------------+
| {"name":"Jane"} |
| NULL            |
| {"name":"John"} |
+-----------------+
9

Các truy vấn sau không thành công vì

  • Số đã được chuyển vào không thể được lưu trữ mà không làm mất độ chính xác
  • '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
    85 được sử dụng hoàn toàn trong truy vấn đầu tiên và rõ ràng trong truy vấn thứ hai
SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
0

Truy vấn sau làm tròn số thành một số có thể được lưu trữ trong JSON

SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
1

JSON_EXTRACT[json_expr, json_path]
55

SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
2

Sự miêu tả

Nhận một giá trị SQL và trả về một giá trị JSON. Giá trị phải là loại dữ liệu SQL Chuẩn của Google được hỗ trợ. Bạn có thể xem lại các loại dữ liệu SQL Chuẩn của Google mà chức năng này hỗ trợ và mã hóa JSON của chúng

Hàm này hỗ trợ một đối số có tên bắt buộc tùy chọn có tên là

'{"class" : {"students" : [{"name" : "Jane"}]}}'
93

  • Nếu đối số này là
    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
    94, các giá trị số bên ngoài miền loại
    JSON_EXTRACT[json_expr, json_path]
    
    65 được mã hóa dưới dạng chuỗi
  • Nếu đối số này không được sử dụng hoặc là
    '{"class" : {"students" : [{"name" : "Jane"}]}}'
    
    96, thì các giá trị số bên ngoài miền loại
    JSON_EXTRACT[json_expr, json_path]
    
    65 không được mã hóa dưới dạng chuỗi nhưng được lưu trữ dưới dạng số JSON. Nếu một giá trị số không thể được lưu trữ trong JSON mà không làm mất độ chính xác, thì sẽ xảy ra lỗi

Các loại dữ liệu số sau đây bị ảnh hưởng bởi đối số

'{"class" : {"students" : [{"name" : "Jane"}]}}'
93

  • JSON_EXTRACT[json_expr, json_path]
    
    63
  • SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
    
    00
  • SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
    
    01

Nếu một trong các loại dữ liệu số này xuất hiện trong loại dữ liệu vùng chứa, chẳng hạn như

SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
02 hoặc
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
03, thì đối số
'{"class" : {"students" : [{"name" : "Jane"}]}}'
93 được áp dụng cho loại dữ liệu số trong loại dữ liệu vùng chứa

loại trả lại

Một giá trị JSON

ví dụ

Trong ví dụ sau, truy vấn chuyển đổi các hàng trong bảng thành giá trị JSON

SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
3

Trong ví dụ sau, truy vấn trả về một giá trị số lớn dưới dạng chuỗi JSON

SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
4

Trong ví dụ sau, cả hai truy vấn đều trả về một giá trị số lớn dưới dạng số JSON

SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
5

Trong ví dụ sau, chỉ các giá trị số lớn mới được chuyển thành chuỗi JSON

SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
6

Trong ví dụ này, các giá trị

SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05 [_______0_______63] và
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
07 [
JSON_EXTRACT[json_expr, json_path]
65] được chuyển đổi thành siêu kiểu chung
JSON_EXTRACT[json_expr, json_path]
65, không bị ảnh hưởng bởi đối số
'{"class" : {"students" : [{"name" : "Jane"}]}}'
93

SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
7

JSON_EXTRACT[json_expr, json_path]
57

SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
8

Sự miêu tả

Nhận một giá trị SQL và trả về một biểu diễn chuỗi có định dạng JSON của giá trị. Giá trị phải là loại dữ liệu SQL Chuẩn của Google được hỗ trợ. Bạn có thể xem lại các loại dữ liệu SQL Chuẩn của Google mà chức năng này hỗ trợ và mã hóa JSON của chúng

Hàm này hỗ trợ một tham số boolean tùy chọn có tên là

SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
12. Nếu
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
12 là
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
14, giá trị trả về được định dạng để dễ đọc

loại trả lại

Một định dạng JSON

JSON_EXTRACT[json_expr, json_path]
29

ví dụ

Chuyển đổi các hàng trong bảng thành các chuỗi có định dạng JSON

SELECT JSON_EXTRACT[json_text, '$.class.students[1].name'] AS second_student_name
FROM UNNEST[[
  '{"class" : {"students" : [{"name" : "Jane"}]}}',
  '{"class" : {"students" : []}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name" : null}]}}',
  '{"class" : {"students" : [{"name" : "John"}, {"name": "Jamie"}]}}'
  ]] AS json_text;

+-------------------+
| second_student    |
+-------------------+
| NULL              |
| NULL              |
| NULL              |
| "Jamie"           |
+-------------------+
9

Chuyển đổi các hàng trong bảng thành các chuỗi có định dạng JSON dễ đọc

JSON_EXTRACT[json_expr, json_path]
00

JSON_EXTRACT[json_expr, json_path]
29

JSON_EXTRACT[json_expr, json_path]
01

Sự miêu tả

Lấy một biểu thức JSON, trích xuất một chuỗi JSON và trả về giá trị đó dưới dạng SQL

JSON_EXTRACT[json_expr, json_path]
29. Nếu biểu thức là SQL
JSON_EXTRACT[json_expr, json_path]
32, hàm trả về SQL
JSON_EXTRACT[json_expr, json_path]
32. Nếu giá trị JSON được trích xuất không phải là một chuỗi, thì sẽ xảy ra lỗi

  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON_EXTRACT[json_expr, json_path]
    
    02

loại trả lại

JSON_EXTRACT[json_expr, json_path]
29

ví dụ

JSON_EXTRACT[json_expr, json_path]
03____0_______04

Các ví dụ sau đây cho thấy cách xử lý các yêu cầu không hợp lệ

JSON_EXTRACT[json_expr, json_path]
05

JSON_EXTRACT[json_expr, json_path]
61

JSON_EXTRACT[json_expr, json_path]
06

Sự miêu tả

Lấy một biểu thức JSON, trích xuất một giá trị logic JSON và trả về giá trị đó dưới dạng SQL

JSON_EXTRACT[json_expr, json_path]
61. Nếu biểu thức là SQL
JSON_EXTRACT[json_expr, json_path]
32, hàm trả về SQL
JSON_EXTRACT[json_expr, json_path]
32. Nếu giá trị JSON được trích xuất không phải là giá trị boolean, thì sẽ xảy ra lỗi

  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON_EXTRACT[json_expr, json_path]
    
    02

loại trả lại

JSON_EXTRACT[json_expr, json_path]
61

ví dụ

JSON_EXTRACT[json_expr, json_path]
08
JSON_EXTRACT[json_expr, json_path]
09

Các ví dụ sau đây cho thấy cách xử lý các yêu cầu không hợp lệ

JSON_EXTRACT[json_expr, json_path]
10

JSON_EXTRACT[json_expr, json_path]
63

JSON_EXTRACT[json_expr, json_path]
11

Sự miêu tả

Lấy một biểu thức JSON, trích xuất một số JSON và trả về giá trị đó dưới dạng SQL

JSON_EXTRACT[json_expr, json_path]
63. Nếu biểu thức là SQL
JSON_EXTRACT[json_expr, json_path]
32, hàm trả về SQL
JSON_EXTRACT[json_expr, json_path]
32. Nếu số JSON được trích xuất có một phần phân số hoặc nằm ngoài miền INT64, thì sẽ xảy ra lỗi

  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON_EXTRACT[json_expr, json_path]
    
    02

loại trả lại

JSON_EXTRACT[json_expr, json_path]
63

ví dụ

JSON_EXTRACT[json_expr, json_path]
13
JSON_EXTRACT[json_expr, json_path]
14
JSON_EXTRACT[json_expr, json_path]
15

Các ví dụ sau đây cho thấy cách xử lý các yêu cầu không hợp lệ

JSON_EXTRACT[json_expr, json_path]
16

JSON_EXTRACT[json_expr, json_path]
65

JSON_EXTRACT[json_expr, json_path]
17

Sự miêu tả

Lấy một biểu thức JSON, trích xuất một số JSON và trả về giá trị đó dưới dạng SQL

JSON_EXTRACT[json_expr, json_path]
65. Nếu biểu thức là SQL
JSON_EXTRACT[json_expr, json_path]
32, hàm trả về SQL
JSON_EXTRACT[json_expr, json_path]
32. Nếu giá trị JSON được trích xuất không phải là một số, sẽ xảy ra lỗi

  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON_EXTRACT[json_expr, json_path]
    
    02

Hàm này hỗ trợ một đối số có tên bắt buộc tùy chọn có tên là

'{"class" : {"students" : [{"name" : "Jane"}]}}'
79 xác định điều gì sẽ xảy ra với một số không thể được biểu diễn dưới dạng FLOAT64 mà không làm mất độ chính xác

Đối số này chấp nhận một trong hai giá trị phân biệt chữ hoa chữ thường

  • 'chính xác'. Hàm không thành công nếu kết quả không thể được biểu diễn dưới dạng
    JSON_EXTRACT[json_expr, json_path]
    
    65 mà không làm mất độ chính xác
  • 'vòng'. Giá trị số được lưu trữ trong JSON sẽ được làm tròn thành
    JSON_EXTRACT[json_expr, json_path]
    
    65. Nếu không thể làm tròn như vậy, chức năng không thành công. Đây là giá trị mặc định nếu đối số không được chỉ định

loại trả lại

JSON_EXTRACT[json_expr, json_path]
65

ví dụ

JSON_EXTRACT[json_expr, json_path]
19_______0_______20
JSON_EXTRACT[json_expr, json_path]
21
JSON_EXTRACT[json_expr, json_path]
22

Các ví dụ sau đây cho thấy cách xử lý các yêu cầu không hợp lệ

JSON_EXTRACT[json_expr, json_path]
23

JSON_EXTRACT[json_expr, json_path]
67

JSON_EXTRACT[json_expr, json_path]
24

Sự miêu tả

Nhận một biểu thức JSON và trả về loại giá trị JSON ngoài cùng dưới dạng SQL

JSON_EXTRACT[json_expr, json_path]
29. Tên của các loại JSON này có thể được trả lại

  • SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
    
    45
  • SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
    
    46
  • SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
    
    47
  • SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
    
    48
  • SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
    
    49
  • JSON_EXTRACT[json_expr, json_path]
    
    72

Nếu biểu thức là SQL

JSON_EXTRACT[json_expr, json_path]
32, hàm trả về SQL
JSON_EXTRACT[json_expr, json_path]
32. Nếu giá trị JSON được trích xuất không phải là loại JSON hợp lệ, sẽ xảy ra lỗi

  • JSON_EXTRACT[json_expr, json_path]
    
    73. JSON. Ví dụ

    JSON_EXTRACT[json_expr, json_path]
    
    02

loại trả lại

JSON_EXTRACT[json_expr, json_path]
29

ví dụ

JSON_EXTRACT[json_expr, json_path]
26

mã hóa JSON

Bảng sau đây bao gồm các mã hóa phổ biến được sử dụng khi giá trị SQL được mã hóa dưới dạng giá trị JSON bằng hàm

JSON_EXTRACT[json_expr, json_path]
57 hoặc
JSON_EXTRACT[json_expr, json_path]
55

Từ ví dụ SQL sang JSON NULL

vô giá trị

đầu vào SQL.
JSON_EXTRACT[json_expr, json_path]
32
đầu ra JSON.
JSON_EXTRACT[json_expr, json_path]
72BOOLbooleanSQL đầu vào.
'{"class" : {"students" : [{"name" : "Jane"}]}}'
94
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
14
đầu vào SQL.
'{"class" : {"students" : [{"name" : "Jane"}]}}'
96
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
62
INT64

[chỉ TO_JSON_STRING]

số hoặc chuỗi

Được mã hóa dưới dạng số khi giá trị nằm trong phạm vi [-253, 253], là phạm vi số nguyên có thể được biểu diễn không mất dữ liệu dưới dạng số dấu phẩy động có độ chính xác kép IEEE 754. Một giá trị bên ngoài phạm vi này được mã hóa thành một chuỗi

đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
63
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
63
đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
66
INT64

[chỉ TO_JSON]

số hoặc chuỗi

Nếu đối số

'{"class" : {"students" : [{"name" : "Jane"}]}}'
93 là
'{"class" : {"students" : [{"name" : "Jane"}]}}'
94 và giá trị nằm ngoài miền loại FLOAT64, thì giá trị được mã hóa dưới dạng chuỗi. Nếu giá trị không thể được lưu trữ trong JSON mà không làm mất độ chính xác, hàm sẽ không thành công. Mặt khác, giá trị được mã hóa dưới dạng số

Nếu

'{"class" : {"students" : [{"name" : "Jane"}]}}'
93 không được sử dụng hoặc là
'{"class" : {"students" : [{"name" : "Jane"}]}}'
96, các giá trị số bên ngoài miền loại `FLOAT64` không được mã hóa dưới dạng chuỗi mà được lưu trữ dưới dạng số JSON. Nếu một giá trị số không thể được lưu trữ trong JSON mà không làm mất độ chính xác, thì sẽ xảy ra lỗi

đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
63
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
63
đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
Đầu vào SQL với stringify_wide_numbers=>TRUE.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
63
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
63
Đầu vào SQL với stringify_wide_numbers=>TRUE.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
66
SỐ
SỐ LỚN

[chỉ TO_JSON_STRING]

số hoặc chuỗi

Được mã hóa dưới dạng số khi giá trị nằm trong phạm vi [-253, 253] và không có phần phân số. Một giá trị bên ngoài phạm vi này được mã hóa thành một chuỗi

đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
79
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
79
đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
81
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
81
đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
66
đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
85
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
86
SỐ
SỐ LỚN

[chỉ TO_JSON]

số hoặc chuỗi

Nếu đối số

'{"class" : {"students" : [{"name" : "Jane"}]}}'
93 là
'{"class" : {"students" : [{"name" : "Jane"}]}}'
94 và giá trị nằm ngoài miền loại FLOAT64, thì nó được mã hóa dưới dạng chuỗi. Mặt khác, nó được mã hóa dưới dạng số

đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
79
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
79
đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
81
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
81
đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
85
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
85
Đầu vào SQL với stringify_wide_numbers=>TRUE.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
66
Đầu vào SQL với stringify_wide_numbers=>TRUE.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
85
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
85
FLOAT64

số hoặc chuỗi

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
01 và
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
02 được mã hóa thành
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
03,
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
04 và
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
02. Mặt khác, giá trị này được mã hóa dưới dạng số

đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
06
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
07
đầu vào SQL.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
đầu ra JSON.
SELECT JSON_EXTRACT["null", "$"] -- Returns a SQL NULL
05
đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
10
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
11
đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
12
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
13
đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
14
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
14
CHUỖI

chuỗi

Được mã hóa dưới dạng chuỗi, thoát theo tiêu chuẩn JSON. Cụ thể,

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
16,
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
17 và các ký tự điều khiển từ
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
18 đến
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
19 được thoát

đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
20
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
20
đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
22
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
22
BYTE

chuỗi

Sử dụng mã hóa dữ liệu RFC 4648 Base64

đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
24
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
25
DATEstringSQL đầu vào.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
26
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
27
DẤU THỜI GIAN

chuỗi

Được mã hóa thành ngày và giờ theo tiêu chuẩn ISO 8601, trong đó T phân tách ngày và giờ và Z [Zulu/UTC] đại diện cho múi giờ

đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
28
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
29
NGÀY GIỜ

chuỗi

Được mã hóa thành ngày và giờ theo tiêu chuẩn ISO 8601, trong đó T phân tách ngày và giờ

đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
30
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
31
THỜI GIAN

chuỗi

Được mã hóa theo thời gian ISO 8601

đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
32
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
33
JSON

dữ liệu của JSON đầu vào

đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
34
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
35
đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
36
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
36
MẢNG

mảng

Có thể chứa 0 hoặc nhiều phần tử

đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
38
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
39
đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
36
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
41
CẤU TRÚC

mục tiêu

Đối tượng có thể chứa 0 hoặc nhiều cặp khóa/giá trị. Mỗi giá trị được định dạng theo loại của nó

Đối với

JSON_EXTRACT[json_expr, json_path]
55, một trường được bao gồm trong chuỗi đầu ra và bất kỳ trường trùng lặp nào của trường này đều bị bỏ qua. Đối với
JSON_EXTRACT[json_expr, json_path]
57, một trường và bất kỳ bản sao nào của trường này được bao gồm trong chuỗi đầu ra

Các trường ẩn danh được biểu thị bằng

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
44

Tên trường UTF-8 không hợp lệ có thể dẫn đến JSON không thể phân tích cú pháp. Các giá trị chuỗi được thoát theo tiêu chuẩn JSON. Cụ thể,

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
16,
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
17 và các ký tự điều khiển từ
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
18 đến
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
19 được thoát

đầu vào SQL.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
49
đầu ra JSON.
JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
50

Định dạng đường dẫn JSON

Với định dạng JSONPath, bạn có thể xác định các giá trị bạn muốn lấy từ chuỗi có định dạng JSON. Định dạng JSONPath hỗ trợ các toán tử này

Toán tử Mô tảVí dụ
JSON_EXTRACT[json_expr, json_path]
97Đối tượng gốc hoặc phần tử. Định dạng JSONPath phải bắt đầu bằng toán tử này, dùng để chỉ cấp ngoài cùng của chuỗi có định dạng JSON

Chuỗi định dạng JSON

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
52

đường dẫn JSON

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
53

kết quả JSON

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
54

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
55Người điều hành con. Bạn có thể xác định các giá trị con bằng ký hiệu dấu chấm

Chuỗi định dạng JSON

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
52

đường dẫn JSON

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
57

kết quả JSON

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
58

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
59 Toán tử chỉ số. Nếu đối tượng JSON là một mảng, bạn có thể sử dụng dấu ngoặc để chỉ định chỉ mục mảng

Chuỗi định dạng JSON

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
52

đường dẫn JSON

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
61

kết quả JSON

JSON '{"class" : {"students" : [{"name" : "Jane"}]}}'
62

Nếu một khóa trong hàm JSON chứa toán tử định dạng JSON, hãy tham khảo từng hàm JSON để biết cách thoát chúng

Một hàm JSON trả về

JSON_EXTRACT[json_expr, json_path]
32 nếu định dạng JSONPath không khớp với một giá trị trong chuỗi có định dạng JSON. Nếu giá trị được chọn cho một hàm vô hướng không phải là vô hướng, chẳng hạn như một đối tượng hoặc một mảng, hàm sẽ trả về
JSON_EXTRACT[json_expr, json_path]
32. Nếu định dạng JSONPath không hợp lệ, sẽ xảy ra lỗi

Tôi có thể sử dụng dấu ngoặc đơn trong JSON không?

Chuỗi trong JSON được chỉ định bằng cách sử dụng dấu ngoặc kép, i. e. , ". Nếu các chuỗi được đặt trong dấu nháy đơn, thì JSON là JSON không hợp lệ .

Bạn có thể sử dụng dấu ngoặc đơn trong SQL không?

Dấu nháy đơn được dùng để biểu thị phần đầu và phần cuối của một chuỗi trong SQL . Dấu ngoặc kép thường không được sử dụng trong SQL, nhưng điều đó có thể thay đổi từ cơ sở dữ liệu này sang cơ sở dữ liệu khác. Bám sát sử dụng dấu nháy đơn. Dù sao thì đó cũng là mục đích sử dụng chính.

Làm cách nào để truy vấn dữ liệu JSON trong MySQL?

Dữ liệu mẫu
Chọn một trường JSON. Xóa dấu ngoặc kép khỏi kết quả lựa chọn
Sử dụng ký hiệu dấu chấm trong đường dẫn lựa chọn
Sử dụng trường đã chọn làm điều kiện
Kết thúc

Sự khác biệt giữa backtick và trích dẫn đơn trong MySQL là gì?

BACKTICKS[`] được sử dụng xung quanh tên định danh. SINGLE QUOTES['] được sử dụng quanh các giá trị .

Chủ Đề