Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong kèo chấp bóng đá hôm nay phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

8.14.kèo chấp bóng đá hôm nayloại#

kèo chấp bóng đá hôm nay loại dữ liệu JSON là để lưu trữ dữ liệu JSON (ký hiệu đối tượng JavaScript), như được chỉ định trongRFC 7159. Dữ liệu đó cũng có thể được lưu trữ dưới dạngText, nhưng kèo chấp bóng đá hôm nay loại dữ liệu JSON có lợi thế là thực thi rằng mỗi giá trị được lưu trữ là hợp lệ theo kèo chấp bóng đá hôm nay quy tắc của JSON. Ngoài ra còn có kèo chấp bóng đá hôm nay chức năng và toán tử dành riêng cho JSON và kèo chấp bóng đá hôm nay toán tử có sẵn cho dữ liệu được lưu trữ trong kèo chấp bóng đá hôm nay loại dữ liệu này;Phần 9.16.

PostgreSQLCung cấp hai loại để lưu trữ dữ liệu kèo chấp bóng đá hôm nay:kèo chấp bóng đá hôm nayjsonb. Để thực hiện kèo chấp bóng đá hôm nay cơ chế truy vấn hiệu quả cho kèo chấp bóng đá hôm nay loại dữ liệu này,PostgreSQLcũng cung cấpJsonPathKiểu dữ liệu được mô tả trongPhần 8.14.7.

Thekèo chấp bóng đá hôm nayjsonbkèo chấp bóng đá hôm nay loại dữ liệu Chấp nhậngần nhưBộ giá trị giống hệt nhau làm đầu vào. Sự khác biệt thực tế chính là một trong những hiệu quả.kèo chấp bóng đá hôm nayKiểu dữ liệu lưu trữ một bản sao chính xác của văn bản đầu vào, kèo chấp bóng đá hôm nay chức năng xử lý phải sửa chữa trên mỗi lần thực thi; trong khiJSONBDữ liệu được lưu trữ ở định dạng nhị phân bị phân hủy làm cho nó chậm hơn một chút so với đầu vào do chi phí chuyển đổi được thêm vào, nhưng nhanh hơn đáng kể để xử lý, vì không cần thiết phải lặp lại.jsonbCũng hỗ trợ lập chỉ mục, có thể là một lợi thế đáng kể.

kèo chấp bóng đá hôm nayLoại lưu trữ một bản sao chính xác của văn bản đầu vào, nó sẽ bảo tồn khoảng trắng không đáng kể về mặt ngữ nghĩa giữa kèo chấp bóng đá hôm nay mã thông báo, cũng như thứ tự của kèo chấp bóng đá hôm nay khóa trong kèo chấp bóng đá hôm nay đối tượng JSON. Ngoài ra, nếu một đối tượng JSON trong giá trị chứa cùng một khóa hơn một lần, tất cả kèo chấp bóng đá hôm nay cặp khóa/giá trị được giữ.jsonbKhông bảo toàn không gian trắng, không bảo toàn thứ tự của kèo chấp bóng đá hôm nay phím đối tượng và không giữ kèo chấp bóng đá hôm nay phím đối tượng trùng lặp. Nếu kèo chấp bóng đá hôm nay khóa trùng lặp được chỉ định trong đầu vào, chỉ có giá trị cuối cùng được giữ.

Nói chung, hầu hết kèo chấp bóng đá hôm nay ứng dụng nên thích lưu trữ dữ liệu JSON dưới dạngjsonb, Trừ khi có nhu cầu khá chuyên môn, chẳng hạn như kèo chấp bóng đá hôm nay giả định di sản về việc đặt hàng kèo chấp bóng đá hôm nay khóa đối tượng.

RFC7159 Chỉ định rằng kèo chấp bóng đá hôm nay chuỗi JSON nên được mã hóa trong UTF8. Do đó, kèo chấp bóng đá hôm nay loại JSON không thể phù hợp với đặc tả JSON trừ khi mã hóa cơ sở dữ liệu là UTF8.

RFC7159 cho phép kèo chấp bóng đá hôm nay chuỗi JSON chứa kèo chấp bóng đá hôm nay chuỗi thoát Unicode được ký hiệu bởi\ uxxxx. Trong hàm đầu vào chokèo chấp bóng đá hôm nay13355_13514\ u). Tuy nhiên, chức năng đầu vào chojsonblà nghiêm ngặt hơn: nó không cho phép thoát ra kèo chấp bóng đá hôm nay ký tự không thể được biểu diễn trong mã hóa cơ sở dữ liệu. TheJSONBLoại cũng từ chối\ U0000(vì điều đó không thể được biểu diễn trongPostgreSQL'sTextLoại), và nó khẳng định rằng bất kỳ việc sử dụng kèo chấp bóng đá hôm nay cặp thay thế unicode để chỉ định kèo chấp bóng đá hôm nay ký tự bên ngoài mặt phẳng đa ngôn ngữ cơ bản không chính xác. Escapes unicode hợp lệ được chuyển đổi thành ký tự đơn tương đương để lưu trữ;

Lưu ý

Nhiều chức năng xử lý kèo chấp bóng đá hôm nay được mô tả trongPhần 9.16Sẽ chuyển đổi Escapes Unicode sang kèo chấp bóng đá hôm nay ký tự thông thường và do đó sẽ ném kèo chấp bóng đá hôm nay loại lỗi tương tự chỉ được mô tả ngay cả khi đầu vào của chúng thuộc loạijsonbkhôngJSONB. Thực tế làkèo chấp bóng đá hôm nayHàm đầu vào không tạo ra kèo chấp bóng đá hôm nay kiểm tra này có thể được coi là một tạo tác lịch sử, mặc dù nó cho phép lưu trữ đơn giản (không xử lý) của JSON Unicode Escapes trong mã hóa cơ sở dữ liệu không hỗ trợ kèo chấp bóng đá hôm nay ký tự được đại diện.

Khi chuyển đổi đầu vào kèo chấp bóng đá hôm nay văn bản thànhjsonb, kèo chấp bóng đá hôm nay loại nguyên thủy được mô tả bởiRFC7159 được ánh xạ hiệu quả vào bản địaPostgreSQLkèo chấp bóng đá hôm nay loại, như trongBảng 8.23. Do đó, có một số ràng buộc bổ sung nhỏ về những gì cấu thành hợp lệJSONB15503_15536jsonbLoại, cũng như JSON trong bản tóm tắt, tương ứng với kèo chấp bóng đá hôm nay giới hạn về những gì có thể được biểu diễn bằng kiểu dữ liệu cơ bản. Đáng chú ý,jsonbsẽ từ chối kèo chấp bóng đá hôm nay số nằm ngoài phạm vi củaPostgreSQL SốKiểu dữ liệu, trong khikèo chấp bóng đá hôm naySẽ không. kèo chấp bóng đá hôm nay hạn chế được xác định theo triển khai như vậy được cho phép bởiRFC7159. Tuy nhiên, trong thực tế, kèo chấp bóng đá hôm nay vấn đề như vậy có nhiều khả năng xảy ra trong kèo chấp bóng đá hôm nay triển khai khác, vì thông thường đại diện cho JSONSốLoại nguyên thủy là IEEE 754 Điểm nổi chính xác gấp đôi (màRFC7159 dự đoán rõ ràng và cho phép). Khi sử dụng JSON làm định dạng trao đổi với kèo chấp bóng đá hôm nay hệ thống như vậy, nguy cơ mất độ chính xác số so với dữ liệu được lưu trữ ban đầu bởiPostgreSQLnên được xem xét.

Ngược lại, như đã lưu ý trong bảng có một số hạn chế nhỏ đối với định dạng đầu vào của kèo chấp bóng đá hôm nay loại nguyên thủy JSON không áp dụng cho tương ứngPOSTGRESQLTYPE.

Bảng 8.23. kèo chấp bóng đá hôm nay loại nguyên thủy của JSON và tương ứngPostgreSQLloại

kèo chấp bóng đá hôm nay Loại nguyên thủy PostgreSQLloại ghi chú
chuỗi Text \ U0000không được phép, cũng như kèo chấp bóng đá hôm nay lối thoát Unicode đại diện cho kèo chấp bóng đá hôm nay ký tự không có sẵn trong mã hóa cơ sở dữ liệu
Số Số NANVô cựcGiá trị không được phép
Boolean Boolean Chỉ chữ thườngTRUESaiChính tả được kèo chấp bóng đá hôm nay nhận
null (Không) SQLnulllà một khái niệm khác

8.14.1. kèo chấp bóng đá hôm nay INPUT và Cú pháp đầu ra#

Cú pháp đầu vào/đầu ra cho kèo chấp bóng đá hôm nay loại dữ liệu JSON được chỉ định trongRFC7159.

Sau đây đều hợp lệjsonb(hoặcJSONB) Biểu thức:

- Giá trị vô hướng/nguyên thủy đơn giản

Như đã nêu trước đây, khi giá trị kèo chấp bóng đá hôm nay được nhập và sau đó được in mà không có bất kỳ xử lý bổ sung nào,kèo chấp bóng đá hôm nayđầu ra cùng một văn bản được nhập, trong khijsonbbkhông bảo tồn kèo chấp bóng đá hôm nay chi tiết đáng kể về mặt ngữ nghĩa như khoảng trắng. Ví dụ: lưu ý sự khác biệt ở đây:

Chọn '"Bar": "Baz", "Cân bằng": 7.77, "Active": Sai' :: kèo chấp bóng đá hôm nay;

Một chi tiết đáng chú ý về mặt ngữ nghĩa là trongjsonb, Số sẽ được in theo hành vi của cơ bảnSốLoại. Trong thực tế, điều này có nghĩa là kèo chấp bóng đá hôm nay số được nhập vớiEKý hiệu sẽ được in mà không có nó, ví dụ:

Chọn '"Đọc": 1.230E-5' :: jsonb, '"đọc": 1.230e-5' :: jsonbb;

Tuy nhiên,JSONB21015_21171

Để biết danh sách kèo chấp bóng đá hôm nay chức năng và toán tử tích hợp có sẵn để xây dựng và xử lý kèo chấp bóng đá hôm nay giá trị JSON, xemPhần 9.16.

8.14.2. Thiết kế tài liệu kèo chấp bóng đá hôm nay#

Đại diện cho dữ liệu là JSON có thể linh hoạt hơn đáng kể so với mô hình dữ liệu quan hệ truyền thống, hấp dẫn trong kèo chấp bóng đá hôm nay môi trường nơi kèo chấp bóng đá hôm nay yêu cầu là chất lỏng. Hoàn toàn có thể cho cả hai cách tiếp cận để cùng tồn tại và bổ sung cho nhau trong cùng một ứng dụng.MạnhTài liệuHồi(mốc dữ liệu) trong bảng.

Dữ liệu JSON phải tuân theo kèo chấp bóng đá hôm nay cân nhắc kiểm soát đồng thời giống như bất kỳ loại dữ liệu nào khác khi được lưu trữ trong bảng. Mặc dù việc lưu trữ kèo chấp bóng đá hôm nay tài liệu lớn là có thể thực hiện được, hãy nhớ rằng bất kỳ bản cập nhật nào cũng có được khóa cấp hàng trên toàn bộ hàng.

8.14.3.JSONBNgăn chặn và tồn tại#

Kiểm traViênglà một khả năng quan trọng củaJSONB. Không có bộ cơ sở song song chojsonbLoại. Kiểm tra ngăn chặn xem mộtjsonbTài liệu có trong đó một tài liệu khác. kèo chấp bóng đá hôm nay ví dụ này trả về đúng ngoại trừ như đã lưu ý:

- Giá trị vô hướng/nguyên thủy đơn giản chỉ chứa giá trị giống hệt nhau:khôngđược coi là trong

Nguyên tắc chung là đối tượng chứa phải khớp với đối tượng chứa đối tượng với cấu trúc và nội dung dữ liệu, có thể sau khi loại bỏ một số phần tử mảng không khớp hoặc kèo chấp bóng đá hôm nay cặp giá trị/phím đối tượng khỏi đối tượng chứa. Nhưng hãy nhớ rằng thứ tự của kèo chấp bóng đá hôm nay phần tử mảng không có ý nghĩa khi thực hiện kết hợp ngăn chặn và kèo chấp bóng đá hôm nay phần tử mảng trùng lặp chỉ được xem xét một lần một lần.

Là một ngoại lệ đặc biệt đối với nguyên tắc chung là kèo chấp bóng đá hôm nay cấu trúc phải khớp, một mảng có thể chứa một giá trị nguyên thủy:

- Mảng này chứa giá trị chuỗi nguyên thủy:

JSONBcũng cótồn tạiToán tử, là một biến thể về chủ đề ngăn chặn: Nó kiểm tra xem một chuỗi (được đưa ra dưới dạngTextGiá trị) xuất hiện dưới dạng phần tử phím hoặc mảng đối tượng ở cấp cao nhất củajsonbbGiá trị. kèo chấp bóng đá hôm nay ví dụ này trả về đúng ngoại trừ như đã lưu ý:

- Chuỗi tồn tại dưới dạng phần tử mảng:

kèo chấp bóng đá hôm nay đối tượng JSON phù hợp hơn so với kèo chấp bóng đá hôm nay mảng để ngăn chặn hoặc tồn tại thử nghiệm khi có nhiều khóa hoặc phần tử liên quan, bởi vì không giống như kèo chấp bóng đá hôm nay mảng chúng được tối ưu hóa bên trong để tìm kiếm và không cần phải tìm kiếm tuyến tính.

TIP

Vì ngăn chặn JSON được lồng, một truy vấn thích hợp có thể bỏ qua lựa chọn rõ ràng kèo chấp bóng đá hôm nay đối tượng phụ. Ví dụ, giả sử rằng chúng ta có mộtdoccột chứa kèo chấp bóng đá hôm nay đối tượng ở cấp cao nhất, với hầu hết kèo chấp bóng đá hôm nay đối tượng chứaTagskèo chấp bóng đá hôm nay trường chứa kèo chấp bóng đá hôm nay mảng của kèo chấp bóng đá hôm nay đối tượng phụ. Truy vấn này tìm kèo chấp bóng đá hôm nay mục trong đó kèo chấp bóng đá hôm nay đối tượng phụ chứa cả hai"Thuật ngữ": "Paris""Thuật ngữ": "Thực phẩm"xuất hiện, trong khi bỏ qua bất kỳ phím nào như vậy bên ngoàiTagsmảng:

Chọn Doc- 'SITE_NAME' từ kèo chấp bóng đá hôm nay trang web

Người ta có thể hoàn thành điều tương tự với, nói,

Chọn Doc- 'SITE_NAME' từ kèo chấp bóng đá hôm nay trang web

Nhưng cách tiếp cận đó kém linh hoạt và thường kém hiệu quả.

Mặt khác, toán tử tồn tại kèo chấp bóng đá hôm nay không được lồng: nó sẽ chỉ tìm kiếm khóa hoặc phần tử mảng được chỉ định ở cấp cao nhất của giá trị kèo chấp bóng đá hôm nay.

kèo chấp bóng đá hôm nay toán tử ngăn chặn và tồn tại khác nhau, cùng với tất cả kèo chấp bóng đá hôm nay toán tử và chức năng JSON khác được ghi lại trongPhần 9.16.

8.14.4.JSONBlập chỉ mục#

Chỉ mục GIN có thể được sử dụng để tìm kiếm hiệu quả kèo chấp bóng đá hôm nay khóa hoặc kèo chấp bóng đá hôm nay cặp khóa/giá trị xảy ra trong một số lượng lớnJSONBTài liệu (mốc dữ liệu). Hai Ginkèo chấp bóng đá hôm nay lớp toán tửđược cung cấp, cung cấp hiệu suất và sự đánh đổi linh hoạt khác nhau.

Lớp toán tử GIN mặc định choJSONBHỗ trợ kèo chấp bóng đá hôm nay truy vấn với kèo chấp bóng đá hôm nay toán tử tồn tại khóa?, ? |? &, toán tử ngăn chặn@JsonPathTrình điều hành khớp@?@@. (Để biết chi tiết về ngữ nghĩa mà kèo chấp bóng đá hôm nay toán tử này thực hiện, xemBảng 9,48.) Một ví dụ về việc tạo một chỉ mục với lớp toán tử này là:

Tạo IDXgin chỉ mục trên API bằng Gin (JDOC);

Lớp toán tử GIN không mặc địnhJSONB_PATH_OPSKhông hỗ trợ kèo chấp bóng đá hôm nay toán tử tồn tại khóa, nhưng nó không hỗ trợ@, @?@@. Một ví dụ về việc tạo một chỉ mục với lớp toán tử này là:

Tạo IDXGINP trên API bằng Gin (JDOC JSONB_PATH_OPS);

Xem xét ví dụ về một bảng lưu trữ kèo chấp bóng đá hôm nay tài liệu JSON được lấy từ dịch vụ web của bên thứ ba, với định nghĩa lược đồ được ghi lại. Một tài liệu điển hình là:


    

Chúng tôi lưu trữ kèo chấp bóng đá hôm nay tài liệu này trong một bảng có tênAPI, trong AJSONBCột có tênJDOC. Nếu một chỉ mục gin được tạo trên cột này, kèo chấp bóng đá hôm nay truy vấn như sau có thể sử dụng chỉ mục:

- Tìm kèo chấp bóng đá hôm nay tài liệu trong đó "công ty" có giá trị "magnafone"

Tuy nhiên, chỉ mục không thể được sử dụng cho kèo chấp bóng đá hôm nay truy vấn như sau, bởi vì mặc dù toán tử?có thể lập chỉ mục, nó không được áp dụng trực tiếp cho cột được lập chỉ mụcJDOC:

- Tìm tài liệu trong đó "thẻ" khóa chứa phần tử khóa hoặc mảng "QUI"

Tuy nhiên, với việc sử dụng kèo chấp bóng đá hôm nay chỉ mục biểu thức phù hợp, truy vấn trên có thể sử dụng một chỉ mục. Nếu truy vấn cho kèo chấp bóng đá hôm nay mục cụ thể trong"Tags"khóa là phổ biến, xác định một chỉ mục như thế này có thể đáng giá:

Tạo IDXGINTAGS trên API bằng Gin ((JDOC - 'Tags'));

Bây giờ,WHEREmệnh đềJDOC - 'Tags'? 'Qui'sẽ được công nhận là ứng dụng của toán tử có thể lập chỉ mục?đến biểu thức được lập chỉ mụcJDOC - 'Tags'. (Có thể tìm thấy thêm thông tin về kèo chấp bóng đá hôm nay chỉ mục biểu thức trongPhần 11.7.)

Một cách tiếp cận khác để truy vấn là khai thác ngăn chặn, ví dụ:

- Tìm kèo chấp bóng đá hôm nay tài liệu trong đó "thẻ" khóa chứa phần tử mảng "QUI"

Một chỉ mục gin đơn giản trênJDOCCột có thể hỗ trợ truy vấn này. Nhưng lưu ý rằng một chỉ mục như vậy sẽ lưu trữ kèo chấp bóng đá hôm nay bản sao của mọi khóa và giá trị trongJDOCCột, trong khi chỉ mục biểu thức của ví dụ trước chỉ lưu trữ dữ liệu được tìm thấy dướiTagskhóa. Mặc dù cách tiếp cận chỉ số đơn giản linh hoạt hơn nhiều (vì nó hỗ trợ kèo chấp bóng đá hôm nay truy vấn về bất kỳ khóa nào), kèo chấp bóng đá hôm nay chỉ mục biểu thức được nhắm mục tiêu có khả năng nhỏ hơn và nhanh hơn để tìm kiếm so với một chỉ mục đơn giản.

Chỉ số Gin cũng hỗ trợ@?@@toán tử, thực hiệnJsonPathKết hợp. Ví dụ là

Chọn jdoc- 'guid', jdoc- 'tên' từ API nơi jdoc @? '$ .tags [*]?
33889_33977

Đối với kèo chấp bóng đá hôm nay toán tử này, một chỉ số gin trích xuất kèo chấp bóng đá hôm nay mệnh đề của biểu mẫuaccessors_chain==hằng sốra khỏiJsonPathmẫu và tìm kiếm chỉ mục dựa trên kèo chấp bóng đá hôm nay khóa và giá trị được đề cập trong kèo chấp bóng đá hôm nay mệnh đề này. Chuỗi người truy cập có thể bao gồm.Key, [*][index]Trình truy cập. Thejsonb_opsLớp toán tử cũng hỗ trợ.*.**Trình truy cập, nhưngJSONB_PATH_OPSLớp toán tử không.

mặc dùJSONB_PATH_OPSLớp toán tử chỉ hỗ trợ kèo chấp bóng đá hôm nay truy vấn với@, @?@@toán tử, nó có lợi thế hiệu suất đáng chú ý so với lớp toán tử mặc địnhjsonb_ops. MỘTJSONB_PATH_OPSChỉ mục thường nhỏ hơn nhiều so vớijsonb_ops​​Chỉ mục trên cùng một dữ liệu và tính đặc hiệu của kèo chấp bóng đá hôm nay tìm kiếm là tốt hơn, đặc biệt khi kèo chấp bóng đá hôm nay truy vấn chứa kèo chấp bóng đá hôm nay khóa xuất hiện thường xuyên trong dữ liệu. Do đó, kèo chấp bóng đá hôm nay hoạt động tìm kiếm thường hoạt động tốt hơn so với lớp toán tử mặc định.

Sự khác biệt kỹ thuật giữa AJSONB_OPSvà AJSONB_PATH_OPS35626_35796[7]Về cơ bản, mỗiJSONB_PATH_OPSMục chỉ mục là một hàm băm của giá trị và khóa (s) dẫn đến nó; Ví dụ: chỉ mục"foo": "Bar": "Baz", một mục chỉ mục duy nhất sẽ được tạo kết hợp cả ba củafoo, BarBazvào giá trị băm. Do đó, một truy vấn ngăn chặn tìm kiếm cấu trúc này sẽ dẫn đến một tìm kiếm chỉ mục cực kỳ cụ thể;fooxuất hiện dưới dạng khóa. Mặt khác, AJSONB_OPSINDEX sẽ tạo ba mục chỉ mục đại diện chofoo, BarBazriêng biệt; Sau đó để thực hiện truy vấn ngăn chặn, nó sẽ tìm kiếm kèo chấp bóng đá hôm nay hàng chứa cả ba mục này.jsonb_path_opsTìm kiếm, đặc biệt nếu có một số lượng rất lớn kèo chấp bóng đá hôm nay hàng chứa bất kỳ một trong ba mục chỉ mục.

Một nhược điểm củaJSONB_PATH_OPSCách tiếp cận là nó không tạo ra kèo chấp bóng đá hôm nay mục nhập chỉ mục cho kèo chấp bóng đá hôm nay cấu trúc JSON không chứa bất kỳ giá trị nào, chẳng hạn như"A":. Nếu một tìm kiếm cho kèo chấp bóng đá hôm nay tài liệu chứa một cấu trúc như vậy được yêu cầu, nó sẽ yêu cầu quét toàn bộ chỉ số, khá chậm.JSONB_PATH_OPSDo đó không phù hợp với kèo chấp bóng đá hôm nay ứng dụng thường thực hiện kèo chấp bóng đá hôm nay tìm kiếm đó.

JSONBcũng hỗ trợBtreeHashChỉ mục. Đây thường chỉ hữu ích nếu điều quan trọng là kiểm tra sự bình đẳng của kèo chấp bóng đá hôm nay tài liệu JSON hoàn chỉnh.BtreeĐặt hàng choJSONBDatums hiếm khi được quan tâm rất lớn, nhưng cho sự hoàn chỉnh, đó là:

Đối tượng  mảng  Boolean  Số  chuỗi  null

Đối tượng với n cặp  Đối tượng có n - 1 cặp

mảng với n phần tử  Mảng có n - 1 phần tử

ngoại trừ (vì lý do lịch sử) một mảng cấp cao nhất trống sắp xếp nhỏ hơnnull. kèo chấp bóng đá hôm nay đối tượng có số cặp bằng nhau được so sánh theo thứ tự:

Key-1, giá trị-1, key-2...

Lưu ý rằng kèo chấp bóng đá hôm nay khóa đối tượng được so sánh theo thứ tự lưu trữ của chúng; Cụ thể, vì kèo chấp bóng đá hôm nay khóa ngắn hơn được lưu trữ trước kèo chấp bóng đá hôm nay phím dài hơn, điều này có thể dẫn đến kết quả có thể không trực quan, chẳng hạn như:

"AA": 1, "C": 1 "B": 1, "D": 1

Tương tự, kèo chấp bóng đá hôm nay mảng có số lượng phần tử bằng nhau được so sánh theo thứ tự:

Element-1, Element-2...

Giá trị JSON nguyên thủy được so sánh bằng cách sử dụng kèo chấp bóng đá hôm nay quy tắc so sánh tương tự như đối với cơ bảnPOSTGRESQLKiểu dữ liệu. Chuỗi được so sánh bằng cách sử dụng đối chiếu cơ sở dữ liệu mặc định.

8.14.5.JSONBĐăng ký#

TheJSONBKiểu dữ liệu hỗ trợ kèo chấp bóng đá hôm nay biểu thức đăng ký kiểu mảng để trích xuất và sửa đổi kèo chấp bóng đá hôm nay phần tử. kèo chấp bóng đá hôm nay giá trị lồng nhau có thể được biểu thị bằng cách chuỗi kèo chấp bóng đá hôm nay biểu thức đăng ký, tuân theo kèo chấp bóng đá hôm nay quy tắc tương tự nhưđường dẫnĐối số trongjsonb_setHàm. Nếu aJSONBGiá trị là một mảng, kèo chấp bóng đá hôm nay chỉ số số bắt đầu ở mức 0 và kèo chấp bóng đá hôm nay số nguyên âm đếm ngược từ phần tử cuối cùng của mảng. Biểu thức lát cắt không được hỗ trợ.

Cập nhậtCâu lệnh có thể sử dụng đăng ký trongsetmệnh đề để sửa đổijsonbbGiá trị. kèo chấp bóng đá hôm nay đường dẫn đăng ký phải có thể đi qua cho tất cả kèo chấp bóng đá hôm nay giá trị bị ảnh hưởng khi chúng tồn tại.Val ['A'] ['B'] ['C']Có thể đi qua tất cả kèo chấp bóng đá hôm nay cách đếnCNếu mỗiVal, Val ['A']Val ['A'] ['B']là một đối tượng. Nếu bất kỳVal ['A']hoặcVal ['A'] ['B']không được xác định, nó sẽ được tạo thành một đối tượng trống và được lấp đầy khi cần thiết. Tuy nhiên, nếu cóValBản thân hoặc một trong kèo chấp bóng đá hôm nay giá trị trung gian được định nghĩa là một đối tượng không phải là một chuỗi, số hoặcJSONB null, Traversal không thể tiến hành để lỗi được nêu ra và giao dịch bị hủy bỏ.

Một ví dụ về cú pháp đăng ký:

- Trích xuất giá trị đối tượng bằng khóa

jsonbBài tập thông qua đăng ký xử lý một vài trường hợp cạnh khác vớijsonb_set. Khi một nguồnJSONBGiá trị lànull42829_42966

- trong đó jsonb_field là null, bây giờ là "A": 1

Nếu một chỉ mục được chỉ định cho một mảng chứa quá ít phần tử,nullkèo chấp bóng đá hôm nay phần tử sẽ được thêm vào cho đến khi chỉ mục có thể truy cập được và giá trị có thể được đặt.

- nơi jsonb_field ở [], bây giờ là [null, null, 2];

AJSONBGiá trị sẽ chấp nhận kèo chấp bóng đá hôm nay bài tập cho kèo chấp bóng đá hôm nay đường dẫn đăng ký không tồn tại miễn là phần tử hiện tại cuối cùng được chuyển qua là một đối tượng hoặc mảng, như được ngụ ý bởi chỉ số tương ứng (phần tử được biểu thị bằng chỉ số cuối cùng trong đường dẫn không được đi qua và có thể là bất cứ điều gì). kèo chấp bóng đá hôm nay cấu trúc mảng và đối tượng lồng nhau sẽ được tạo và trong trường hợp trướcnull-Padded, như được chỉ định bởi đường dẫn đăng ký cho đến khi có thể đặt giá trị được gán.

- trong đó jsonb_field là , bây giờ là "A": ["B": 1]

8.14.6. Biến đổi#

Tiện ích mở rộng bổ sung có sẵn để thực hiện kèo chấp bóng đá hôm nay biến đổi choJSONBLoại cho kèo chấp bóng đá hôm nay ngôn ngữ thủ tục khác nhau.

kèo chấp bóng đá hôm nay tiện ích mở rộng cho PL/Perl được gọi làJSONB_PLPERLJSONB_PLPERLU. Nếu bạn sử dụng chúng,jsonbGiá trị được ánh xạ tới kèo chấp bóng đá hôm nay mảng, băm và vô hướng, nếu thích hợp.

Phần mở rộng cho PL/Python được gọi làJSONB_PLPYTHON3U. Nếu bạn sử dụng nó,JSONBGiá trị được ánh xạ tới từ điển, danh sách và vô hướng của Python, nếu thích hợp.

của kèo chấp bóng đá hôm nay tiện ích mở rộng này,JSONB_PLPERLđược coi làTrusted, nghĩa là, nó có thể được cài đặt bởi những người không phải là người siêu giám sát cóTạoĐặc quyền trên cơ sở dữ liệu hiện tại. Phần còn lại yêu cầu đặc quyền Superuser để cài đặt.

8.14.7. loại jsonpath#

TheJsonPathLoại thực hiện hỗ trợ cho ngôn ngữ đường dẫn SQL/kèo chấp bóng đá hôm nay trongPostgreSQLĐể truy vấn dữ liệu JSON hiệu quả. Nó cung cấp biểu diễn nhị phân của biểu thức đường dẫn SQL/JSON được phân tích cú pháp chỉ định kèo chấp bóng đá hôm nay mục sẽ được truy xuất bởi công cụ đường dẫn từ dữ liệu JSON để xử lý thêm với kèo chấp bóng đá hôm nay chức năng truy vấn SQL/JSON.

ngữ nghĩa của đường dẫn SQL/JSON và kèo chấp bóng đá hôm nay toán tử thường tuân theo SQL. Đồng thời, để cung cấp một cách làm việc tự nhiên với dữ liệu JSON, cú pháp đường dẫn SQL/JSON sử dụng một số quy ước JavaScript:

  • dot (.) được sử dụng để truy cập thành viên.

  • dấu ngoặc vuông ([]) được sử dụng để truy cập mảng.

  • Mảng SQL/JSON là 0 liên quan, không giống như kèo chấp bóng đá hôm nay mảng SQL thông thường bắt đầu từ 1.

Biết chữ số trong kèo chấp bóng đá hôm nay biểu thức đường dẫn SQL/JSON tuân theo kèo chấp bóng đá hôm nay quy tắc JavaScript, khác với cả SQL và JSON trong một số chi tiết nhỏ. Ví dụ: đường dẫn SQL/JSON cho phép.11., không hợp lệ trong JSON. Ví dụ, kèo chấp bóng đá hôm nay dấu hiệu số nguyên không quyết định và kèo chấp bóng đá hôm nay dấu phân cách được hỗ trợ, ví dụ,1_000_000, 0x1EEE_FFFF, 0O273, 0B100101. Trong đường dẫn SQL/kèo chấp bóng đá hôm nay (và trong JavaScript, nhưng không phải trong SQL thích hợp), không được có dấu phân cách nhấn mạnh ngay sau tiền tố radix.

47700_47912Phần 4.1.2.1). Một số hình thức của biểu thức đường dẫn yêu cầu kèo chấp bóng đá hôm nay chuỗi chữ trong chúng.\ "và để viết một bản sao lại, bạn phải viết\. kèo chấp bóng đá hôm nay chuỗi ngược đặc biệt khác bao gồm kèo chấp bóng đá hôm nay chuỗi được công nhận trong kèo chấp bóng đá hôm nay chuỗi JavaScript:\ B, \ f, \ n, \ r, \ T, \ VĐối với kèo chấp bóng đá hôm nay ký tự điều khiển ASCII khác nhau,\ xnnĐối với mã ký tự được viết chỉ bằng hai chữ số hex,\ unnnnĐối với ký tự Unicode được xác định bởi điểm mã 4-HEX của nó và\ un ...Đối với một điểm mã ký tự Unicode được viết bằng 1 đến 6 chữ số hex.

Một biểu thức đường dẫn bao gồm một chuỗi kèo chấp bóng đá hôm nay phần tử đường dẫn, có thể là bất kỳ điều nào sau đây:

  • Đường dẫn của kèo chấp bóng đá hôm nay loại nguyên thủy JSON: văn bản unicode, số, true, false hoặc null.

  • Biến đường dẫn được liệt kê trongBảng 8.24.

  • Trình điều khiển accessor được liệt kê trongBảng 8.25.

  • JsonPathtoán tử và phương thức được liệt kê trongPhần 9.16.2.3.

  • ngoặc đơn, có thể được sử dụng để cung cấp kèo chấp bóng đá hôm nay biểu thức bộ lọc hoặc xác định thứ tự đánh giá đường dẫn.

Để biết chi tiết về việc sử dụngJsonPathBiểu thức có chức năng truy vấn SQL/kèo chấp bóng đá hôm nay, xemPhần 9.16.2.

Bảng 8.24.JsonPathBiến

biến Mô tả
$ Một biến đại diện cho giá trị kèo chấp bóng đá hôm nay đang được truy vấn (Mục ngữ cảnh).
$ varname Một biến được đặt tên. Giá trị của nó có thể được đặt bởi tham sốVarscủa một số chức năng xử lý kèo chấp bóng đá hôm nay; nhìn thấyBảng 9.51Để biết chi tiết.
@ Một biến biểu thị kết quả đánh giá đường dẫn trong kèo chấp bóng đá hôm nay biểu thức bộ lọc.

Bảng 8.25.JsonPathTrình truy cập

Toán tử accessor Mô tả

.Key

. "$varname"

Trình truy cập thành viên trả về một thành viên đối tượng với khóa được chỉ định. Nếu tên khóa khớp với một số biến được đặt tên bắt đầu với$hoặc không đáp ứng kèo chấp bóng đá hôm nay quy tắc JavaScript cho một định danh, nó phải được đặt trong kèo chấp bóng đá hôm nay trích dẫn kép để biến nó thành một chuỗi theo nghĩa đen.

.*

Trình truy cập thành viên WildCard trả về kèo chấp bóng đá hôm nay giá trị của tất cả kèo chấp bóng đá hôm nay thành viên nằm ở cấp cao nhất của đối tượng hiện tại.

.**

Trình truy cập thành viên WildCard Recurscard xử lý tất cả kèo chấp bóng đá hôm nay cấp độ của hệ thống phân cấp JSON của đối tượng hiện tại và trả về tất cả kèo chấp bóng đá hôm nay giá trị thành viên, bất kể mức độ làm tổ của chúng. Đây là mộtPostgreSQLMở rộng tiêu chuẩn SQL/kèo chấp bóng đá hôm nay.

. **cấp

. **start_levelđếnend_level

như.**, nhưng chỉ chọn kèo chấp bóng đá hôm nay mức được chỉ định của hệ thống phân cấp JSON. Mức làm tổ được chỉ định là số nguyên.LastTừ khóa. Đây là mộtPostgreSQLMở rộng tiêu chuẩn SQL/kèo chấp bóng đá hôm nay.

[SCORSTION, ...]

excoror phần tử mảng.Đăng kýcó thể được đưa ra dưới hai hình thức:indexhoặcstart_indexđếnend_index. Biểu mẫu đầu tiên trả về một phần tử mảng duy nhất theo chỉ mục của nó.start_indexend_index.

được chỉ địnhindexcó thể là một số nguyên, cũng như một biểu thức trả về một giá trị số duy nhất, được tự động chuyển đến số nguyên. Chỉ mục 0 tương ứng với phần tử mảng đầu tiên.LastTừ khóa để biểu thị phần tử mảng cuối cùng, rất hữu ích cho việc xử lý kèo chấp bóng đá hôm nay mảng có độ dài không xác định.

[*]

Trình truy cập phần tử Array WildCard trả về tất cả kèo chấp bóng đá hôm nay phần tử mảng.




[7]Với mục đích này, thuật ngữMạnhgiá trịKhănBao gồm kèo chấp bóng đá hôm nay phần tử mảng, mặc dù thuật ngữ JSON đôi khi xem xét kèo chấp bóng đá hôm nay phần tử mảng khác biệt với kèo chấp bóng đá hôm nay giá trị trong kèo chấp bóng đá hôm nay đối tượng.