SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

SQLite JSON_ARRAY_LENGTH ()

Trong SQLite, json_array_length() hàm trả về số phần tử trong một mảng JSON nhất định.

Mảng được cung cấp dưới dạng một đối số. Nếu mảng được nhúng trong tài liệu JSON lớn hơn, chúng ta có thể sử dụng đối số thứ hai tùy chọn để chỉ định đường dẫn đến mảng.

Nếu giá trị không phải là một mảng, hàm trả về 0 .

Cú pháp

Hàm có thể được sử dụng theo hai cách sau:

json_array_length(X)
json_array_length(X,P)

Ở đâu X đại diện cho mảng và P là một đường dẫn tùy chọn có thể được sử dụng để chỉ định đường dẫn đến mảng trong tài liệu lớn hơn.

Ví dụ

Dưới đây là một ví dụ cơ bản để chứng minh:

SELECT json_array_length('[ 7, 12, 10 ]');

Kết quả:

3

Mảng chứa ba phần tử và vì vậy 3 được trả lại.

Chỉ định một đường dẫn

Chúng ta cũng có thể sử dụng đối số thứ hai để chỉ định đường dẫn đến mảng:

SELECT json_array_length('[ 7, 12, 10 ]', '$');

Kết quả:

3

Trong trường hợp này, mảng ở cấp cao nhất và do đó chúng tôi chuyển $ dưới dạng đường dẫn.

Ví dụ sau sử dụng một mảng được nhúng trong tài liệu lớn hơn:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs'
);

Kết quả:

3

Trong trường hợp này, mảng tại dogs chứa ba phần tử.

Chúng tôi có thể điều hướng xuống cấp độ tiếp theo và tìm số phần tử trong một trong các mảng khác:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs[1].scores'
);

Kết quả:

4

Mảng dựa trên 0 và do đó, số lượng bắt đầu từ 0 . Do đó, chúng tôi đã chỉ định [1] để lấy phần tử thứ hai trong dogs mảng, tình cờ là một đối tượng JSON. Sau đó, chúng tôi sử dụng .scores để chọn mảng của nó.

Chọn Không phải Mảng

Nếu đường dẫn trỏ đến một giá trị không phải là một mảng JSON, 0 được trả lại:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs[1].name'
);

Kết quả:

0

Chọn một đường dẫn không tồn tại

Nếu đối số thứ hai trỏ đến một đường dẫn không tồn tại, null được trả lại.

Đầu tiên, hãy đặt .nullvalue thành NULL :

.nullvalue NULL

.nullvalue lệnh dot cho phép chúng tôi cung cấp một chuỗi sẽ được sử dụng để thay thế các giá trị null. Đó là một trong số cách bạn có thể thay thế các giá trị null bằng một chuỗi trong SQLite. Trong trường hợp này, tôi đặt nó thành NULL . Bây giờ, mọi giá trị null sẽ trả về NULL thay vì một kết quả trống.

Bây giờ chúng ta hãy gọi json_array_length() , nhưng sử dụng đối số thứ hai trỏ đến một đường dẫn không tồn tại:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.cats'
);

Kết quả:

NULL

Đường dẫn không hợp lệ

Chúng tôi sẽ gặp lỗi nếu đường dẫn của chúng tôi không đúng:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'dogs'
);

Kết quả:

Runtime error: JSON path error near 'dogs'

Trong trường hợp này, tôi đã quên bao gồm $. ở phía trước của con đường.

Tài liệu JSON không hợp lệ

Chúng tôi cũng sẽ gặp lỗi do JSON không được định dạng tốt:

SELECT json_array_length('{ "Dogs" : }', 
'$'
);

Kết quả:

Runtime error: malformed JSON

Lần này, lỗi cho chúng tôi biết rằng JSON của chúng tôi không đúng định dạng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các kiểu cột SQLite linh hoạt / tái cấu trúc như thế nào?

  2. Cách cài đặt trình duyệt SQLite và SQLite trong Ubuntu

  3. Cách tạo một cột được tính toán trong SQLite

  4. Cách cập nhật bảng với activeandroid sau khi thêm cột mới

  5. Lưu trữ cơ sở dữ liệu SQLite bằng Android và Phonegap