Phiên kèo bóng đá việt nam được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên kèo bóng đá việt nam phát triển:18 / Devel
Phiên bản kèo bóng đá việt nam được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
Tài liệu này dành cho phiên bản kèo bóng đá việt nam đượ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 bóng đá việt nam phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

F.16. Hstore

Mô -đun này thực hiệnHstoreKiểu dữ liệu để lưu trữ kèo bóng đá việt nam bộ khóa/giá trị trong mộtPostgreSQLGiá trị. Điều này có thể hữu ích trong kèo bóng đá việt nam kịch bản khác nhau, chẳng hạn như kèo bóng đá việt nam hàng có nhiều thuộc tính hiếm khi được kiểm tra hoặc dữ liệu bán cấu trúc.

F.16.1.HstoreĐại diện bên ngoài

Biểu diễn văn kèo bóng đá việt nam củaHstore, được sử dụng cho đầu vào và đầu ra, bao gồm kèo bóng đá việt nam hoặc nhiều hơnKey = Giá trịcặp được phân tách bằng dấu phẩy. Một số ví dụ:

k = v

Thứ tự của kèo bóng đá việt nam cặp không đáng kể (và có thể không được sao chép trên đầu ra). Khoảng trắng giữa kèo bóng đá việt nam cặp hoặc xung quanh=Dấu hiệu bị bỏ qua. kèo bóng đá việt nam phím và giá trị trích dẫn kép bao gồm khoảng trắng, dấu phẩy,=S hoặcs. Để bao gồm một báo giá kép hoặc dấu gạch chéo ngược trong một khóa hoặc giá trị, hãy thoát nó bằng một dấu gạch chéo ngược.

mỗi khóa trong mộtHstorelà duy nhất. Nếu bạn khai báoHstoreVới kèo bóng đá việt nam khóa trùng lặp, chỉ có một cái sẽ được lưu trữ trongHstoreVà kèo bóng đá việt nam có gì đảm bảo sẽ được giữ:

Chọn 'a = 1, a = 2' :: Hstore;

Một giá trị (nhưng kèo bóng đá việt nam phải là khóa) có thể là SQLnull. Ví dụ:

key = null

12294_foo |00foo |20_foo |26Từ khóa kèo bóng đá việt nam nhạy cảm. Hai phần trích dẫnnullĐể coi nó là chuỗi thông thườngnullHàng.

Lưu ý

Hãy nhớ rằngHstoreĐịnh dạng văn kèo bóng đá việt nam, khi được sử dụng cho đầu vào, áp dụngtrướcBất kỳ trích dẫn hoặc thoát yêu cầu nào. Nếu bạn đang vượt quaHstoretheo nghĩa đen thông qua một tham số, sau đó kèo bóng đá việt nam cần xử lý bổ sung. Nhưng nếu bạn đang chuyển nó dưới dạng hằng số theo nghĩa đen được trích dẫn, thì bất kỳ ký tự nào một cách nào và (tùy thuộc vào cài đặt củaStandard_Conforming_StringsTham số cấu hình) kèo bóng đá việt nam ký tự Backslash cần được thoát chính xác. Nhìn thấyPhần 4.1.2.1Để biết thêm về việc xử lý kèo bóng đá việt nam hằng số chuỗi.

trên đầu ra, báo giá đôi luôn bao quanh kèo bóng đá việt nam khóa và giá trị, ngay cả khi nó không hoàn toàn cần thiết.

F.16.2.HstoreNgười vận hành và chức năng

kèo bóng đá việt nam toán tử được cung cấp bởiHstoreMô -đun được hiển thị trongBảng F.7, kèo bóng đá việt nam chức năng trongBảng F.8.

Bảng F.7.Hstoretoán tử

Nhà điều hành Mô tả Ví dụ Kết quả
Hstore - Text Nhận giá trị cho khóa (nullNếu kèo bóng đá việt nam có) 'a = x, b = y' :: hstore - 'a' x
Hstore - Text [] Nhận giá trị cho kèo bóng đá việt nam khóa (nullNếu kèo bóng đá việt nam có) 'a = x, b = y, c = z' :: hstore - mảng ['c', 'a'] "z", "x"
Hstore || Hstore ConcatenateHstoreS 'a = b, c = d' :: hstore || 'c = x, d = q' :: hstore "A" = "B", "C" = "X", "D" = "Q"
Hstore ? Text kèo bóng đá việt namHstorechứa khóa? 'A = 1' :: Hstore? 'Một' T
Hstore ? & Text [] kèo bóng đá việt namHstorechứa tất cả kèo bóng đá việt nam khóa được chỉ định? 'A = 1, b = 2' :: Hstore? & Array ['A', 'B'] T
Hstore ? | Text [] kèo bóng đá việt namHstorechứa bất kỳ khóa nào được chỉ định? 'a = 1, b = 2' :: Hstore? | Mảng ['b', 'c'] T
Hstore @ Hstore Vận hành bên trái có chứa phải kèo bóng đá việt nam? 'a = b, b = 1, c = null' :: hstore @ 'b = 1' T
Hstore <@ Hstore là toán hạng bên trái có ở bên phải? 'A = C' :: Hstore <@ 'A = B, B = 1, C = NULL' f
Hstore - Text Xóa phím từ toán hạng trái 'a = 1, b = 2, c = 3' :: hstore - 'b' :: text "A" = "1", "C" = "3"
Hstore - Text [] Xóa kèo bóng đá việt nam phím từ toán hạng bên trái 'a = 1, b = 2, c = 3' :: hstore - mảng ['a', 'b'] "C" = "3"
Hstore - Hstore Xóa kèo bóng đá việt nam cặp khớp từ toán hạng bên trái 'a = 1, b = 2, c = 3' :: hstore - 'a = 4, b = 2' :: hstore "A" = "1", "C" = "3"
Record #= Hstore Thay thế kèo bóng đá việt nam trường trongRecordvới kèo bóng đá việt nam giá trị phù hợp từHstore Xem ví dụ Phần
%% Hstore Chuyển đổiHstoreĐể mảng kèo bóng đá việt nam khóa và giá trị xen kẽ %% 'a = foo, b = bar' :: hstore a, foo, b, bar
%# Hstore Chuyển đổiHstoređến mảng/mảng giá trị hai chiều %# 'a = foo, b = bar' :: hstore a, foo, b, bar

Lưu ý

Trước PostgreSQL 8.2, toán tử ngăn chặn@<@được gọi là@~, tương ứng. Những cái tên này vẫn có sẵn, nhưng kèo bóng đá việt nam được chấp nhận và cuối cùng sẽ bị xóa.

Bảng F.8.Hstorechức năng

chức năng Loại trả lại Mô tả Ví dụ result
hstore (ghi) Hstore Xây dựngHstoreTừ kèo bóng đá việt nam ghi hoặc hàng Hstore (hàng (1,2)) f1 = 1, f2 = 2
Hstore (văn kèo bóng đá việt nam []) Hstore Xây dựng mộtHstoreTừ một mảng, có thể là mảng khóa/giá trị hoặc mảng hai chiều Hstore (mảng ['a', '1', 'b', '2']) || hstore (mảng [['c', '3'], ['d', '4']])) a = 1, b = 2, c = 3, d = 4
Hstore (văn kèo bóng đá việt nam [], văn kèo bóng đá việt nam []) Hstore Xây dựng mộtHstoreTừ kèo bóng đá việt nam mảng khóa và giá trị riêng biệt Hstore (mảng ['a', 'b'], mảng ['1', '2']) "A" = "1", "B" = "2"
Hstore (văn kèo bóng đá việt nam, văn kèo bóng đá việt nam) Hstore Làm đơn lẻHstore Hstore ('A', 'B') "A" = "B"
akey (hstore) Text [] GETHstores Keys dưới dạng mảng ​​akeys ('a = 1, b = 2') a, b
SKEYS (HSTORE) Setof Text GETHstore23869_23887 SKEYS ('A = 1, B = 2')
a
Avals (hstore) Text [] getHstore'giá trị dưới dạng mảng Avals ('a = 1, b = 2') 1,2
svals (hstore) Setof Text NhậnHstores giá trị dưới dạng tập svals ('a = 1, b = 2')
1
2
hstore_to_array (hstore) Text [] GETHstorekèo bóng đá việt nam phím và giá trị như một mảng kèo bóng đá việt nam khóa và giá trị xen kẽ hstore_to_array ('a = 1, b = 2') a, 1, b, 2
hstore_to_matrix (hstore) Text [] getHstore25876_25923 hstore_to_matrix ('a = 1, b = 2') a, 1, b, 2
hstore_to_json (hstore) json NhậnHstorenhư mộtjsonGiá trị, chuyển đổi tất cả kèo bóng đá việt nam giá trị không null thành chuỗi JSON "A Key": "1", "B": "T", "C": NULL, "D": "foo |45", "E": "0foo |45", "F": "1.234"
hstore_to_jsonb (hstore) jsonb NhậnHstorenhư mộtJSONBGiá trị, chuyển đổi tất cả kèo bóng đá việt nam giá trị không null thành chuỗi JSON "A Key": "1", "B": "T", "C": NULL, "D": "foo |45", "E": "0foo |45", "F": "1.234"
hstore_to_json_loose (hstore) json getHstorenhư mộtjsonGiá trị, nhưng cố gắng phân biệt kèo bóng đá việt nam giá trị số và boolean để chúng không được trích xuất trong JSON "A Key": 1, "B": True, "C": NULL, "D": foo |45, "E": "0foo |45", "F": 1.234, "G"
hstore_to_jsonb_loose (hstore) JSONB NhậnHstorenhư mộtJSONBGiá trị, nhưng cố gắng phân biệt kèo bóng đá việt nam giá trị số và boolean để chúng không được trình bày trong JSON "A Key": 1, "B": True, "C": NULL, "D": foo |45, "E": "0foo |45"
Slice (Hstore, Text []) Hstore Trích xuất một tập hợp conHstore Slice ('a = 1, b = 2, c = 3' :: hstore, mảng ['b', 'c', 'x']) "B" = "2", "C" = "3"
mỗi (Hstore) setof (văn kèo bóng đá việt nam chính, văn kèo bóng đá việt nam giá trị) GETHstore29904_29933 Chọn * từ mỗi ('a = 1, b = 2')
khóa | giá trị
tồn tại (hstore, văn kèo bóng đá việt nam) Boolean kèo bóng đá việt namHstorechứa khóa? tồn tại ('a = 1', 'a') T
được xác định (hstore, văn kèo bóng đá việt nam) Boolean kèo bóng đá việt namHstorechứa kèo bóng đá việt namnullGiá trị cho khóa? được xác định ('a = null', 'a') 31120_31foo |
Xóa (Hstore, Text) Hstore Xóa cặp với phím khớp Xóa ('A = 1, B = 2', 'B') "A" = "1"
Xóa (Hstore, Text []) Hstore Xóa kèo bóng đá việt nam cặp với kèo bóng đá việt nam phím phù hợp Xóa ('a = 1, b = 2, c = 3', mảng ['a', 'b']) "C" = "3"
Xóa (Hstore, Hstore) Hstore Xóa kèo bóng đá việt nam cặp khớp với kèo bóng đá việt nam cặp trong đối số thứ hai Xóa ('a = 1, b = 2', 'a = 4, b = 2' :: hstore) "A" = "1"
Population_Record (Record, Hstore) Record Thay thế kèo bóng đá việt nam trường trongRecordvới kèo bóng đá việt nam giá trị phù hợp từHstore Xem ví dụ Phần

Lưu ý

hàmhstore_to_jsonđược sử dụng khiHstoreGiá trị được đúc thànhJSON. Tương tự như vậy,hstore_to_jsonbđược sử dụng khiHstoreGiá trị được đúc thànhJSONB.

Lưu ý

hàmPopulation_Recordthực sự được khai báo vớiAnyEuity, kèo bóng đá việt namRecord, như đối số đầu tiên của nó, nhưng nó sẽ từ chối kèo bóng đá việt nam loại không ghi với lỗi thời gian chạy.

F.16.3. Chỉ mục

HstoreHỗ trợ Chỉ số Gist và Gin cho@, ?, ? &? |Người vận hành. Ví dụ:

Tạo chỉ mục HIDX trên Testhstore bằng Gist (h);

Hstorecũng hỗ trợBtreehoặcHashChỉ mục cho=toán tử. Điều này cho phépHstorecột được khai báođộc đáohoặc được sử dụng trongNhóm bởi, Đặt hàng bởihoặckhác biệtBiểu thức. Thứ tự sắp xếp choHstoreGiá trị không đặc biệt hữu ích, nhưng kèo bóng đá việt nam chỉ mục này có thể hữu ích cho việc tra cứu tương đương. Tạo chỉ mục cho=So sánh như sau:

Tạo chỉ mục HIDX trên Testhstore bằng Btree (h);

F.16.4. Ví dụ

Thêm khóa hoặc cập nhật khóa hiện có có giá trị mới:

Tab Cập nhật đặt H = H || hstore ('c', '3');

Xóa khóa:

Tab Update Set H = Delete (h, 'K1');

Chuyển đổi ARecordđến mộtHstore:

Tạo thử nghiệm bảng (số nguyên col2 |, văn kèo bóng đá việt nam col2, văn kèo bóng đá việt nam col3);

Chuyển đổi mộtHstoređến được xác định trướcRecordloại:

Tạo thử nghiệm bảng (số nguyên col2 |, văn kèo bóng đá việt nam col2, văn kèo bóng đá việt nam col3);

Sửa đổi bản ghi hiện có bằng cách sử dụng kèo bóng đá việt nam giá trị từHstore:

Tạo thử nghiệm bảng (số nguyên col2 |, văn kèo bóng đá việt nam col2, văn kèo bóng đá việt nam col3);

F.16.5. Thống kê

TheHstoreLoại, vì tính tự do nội tại của nó, có thể chứa rất nhiều khóa khác nhau. Kiểm tra kèo bóng đá việt nam khóa hợp lệ là nhiệm vụ của ứng dụng.

Ví dụ đơn giản:

Chọn * từ mỗi ('aaa = bq, b = null, "" = 1');

Sử dụng bảng:

Chọn (mỗi (h)).

Thống kê trực tuyến:

Chọn khóa, đếm (*) từ

F.16.6. Khả năng tương thích

Kể từ Postgresql 9.0,HstoreSử dụng biểu diễn nội bộ khác với kèo bóng đá việt nam phiên bản trước. Điều này không có trở ngại cho việc nâng cấp/khôi phục từ bỏ vì biểu diễn văn bản (được sử dụng trong bãi rác) không thay đổi.

Trong trường hợp nâng cấp nhị phân, khả năng tương thích hướng lên được duy trì bằng cách có mã mới nhận ra dữ liệu định dạng cũ. Điều này sẽ đòi hỏi một hình phạt hiệu suất nhỏ khi xử lý dữ liệu chưa được sửa đổi bởi mã mới.Cập nhậtCâu như sau:

38707_38760

Một cách khác để làm điều đó là:

38833_38909

TheBảng thay đổiPhương pháp yêu cầuAccess ExclusiveKhóa trên bàn, nhưng không dẫn đến việc làm cho bảng với kèo bóng đá việt nam phiên bản hàng cũ.

F.16.7. Biến đổi

Tiện ích mở rộng bổ sung có sẵn để thực hiện kèo bóng đá việt nam biến đổi choHstoreLoại cho kèo bóng đá việt nam ngôn ngữ PL/Perl và PL/Python. kèo bóng đá việt nam tiện ích mở rộng cho PL/perl được gọi làhstore_plperlHSTORE_PLPERLU, cho PL/Perl đáng tin cậy và không tin cậy. Nếu bạn cài đặt kèo bóng đá việt nam biến đổi này và chỉ định chúng khi tạo hàm,HstoreGiá trị được ánh xạ tới băm Perl. kèo bóng đá việt nam tiện ích mở rộng cho PL/Python được gọi làhstore_plpythonu, hstore_plpython2uHSTORE_PLPYTHON3U(xemPhần 46.1Đối với quy ước đặt tên PL/Python). Nếu bạn sử dụng chúng,HstoreGiá trị được ánh xạ tới từ điển Python.

THẬN TRỌNG

Được khuyến nghị mạnh mẽ rằng kèo bóng đá việt nam tiện ích mở rộng biến đổi được cài đặt trong cùng lược đồ vớiHstore. Nếu kèo bóng đá việt nam

F.16.8. Tác giả

Oleg Bartunov, Moscow, Đại học Moscow, Nga

Teodor Sigaev, Moscow, Delta-Soft Ltd., Nga

Cải tiến bổ sung của Andrew Gierth, Vương quốc Anh