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 cho토토 꽁 머니 43_19Phiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

F.16. 토토 커뮤니티

Mô -đun này thực hiện토토 커뮤니티Kiểu dữ liệu để lưu trữ các bộ khóa/giá trị trong mộtPOSTGRESQLGiá trị. Điều này có thể hữu ích trong các kịch bản khác nhau, chẳng hạn như các 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. Các khóa và giá trị chỉ đơn giản là chuỗi văn bản.

F.16.1.토토 커뮤니티Biểu diễn bên ngoài

Biểu diễn văn bản của토토 커뮤니티, được sử dụng cho đầu vào và đầu ra, bao gồm 0 hoặc nhiều hơnKey = giá trịCác cặp được phân tách bằng dấu phẩy. Một số ví dụ:

k = v
foo = thanh, baz = bất cứ điều gì
"1-a" = "bất cứ điều gì ở tất cả"

Thứ tự của các 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 các cặp hoặc xung quanh=Dấu hiệu bị bỏ qua. Các 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ột토토 커뮤니티là duy nhất. Nếu bạn khai báo토토 커뮤니티Với các khóa trùng lặp, chỉ có một cái sẽ được lưu trữ trong토토 커뮤니티Và không có gì đảm bảo sẽ được giữ:

Chọn 'a = 1, a = 2' :: 토토 커뮤니티;
  hstore
----------
 "A" = "1"

Một giá trị (nhưng không phải là khóa) có thể là SQLnull. Ví dụ:

key = null

ThenullTừ khóa không nhạy cảm với trường hợp. Hai phần trích dẫnnullĐể coi nó là chuỗi thông thường"null".

Lưu ý:Hãy nhớ rằng토토 커뮤니티Định dạng văn bản, 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 qua토토 커뮤니티theo nghĩa đen thông qua một tham số, sau đó không 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) Các 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ý các hằng số chuỗi.

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

F.16.2.토토 커뮤니티Người vận hành và chức năng

Các toán tử được cung cấp bởi토토 커뮤니티Mô -đun được hiển thị trongBảng F-8, các chức năng trongBảng F-9.

Bảng F-8.토토 커뮤니티toán tử

Nhà điều hành Mô tả Ví dụ result
토토 커뮤니티 - Text Nhận giá trị cho khóa (nullNếu không có) 'a = x, b = y' :: 토토 커뮤니티 - 'a' x
토토 커뮤니티 - Text [] Nhận giá trị cho các khóa (nullNếu không có) 'a = x, b = y, c = z' :: 토토 커뮤니티 - mảng ['c', 'a'] "z", "x"
토토 커뮤니티 || 토토 커뮤니티 Concatenate토토 커뮤니티S 'a = b, c = d' :: hstore || 'c = x, d = q' :: hstore "A" = "B", "C" = "X", "D" = "Q"
토토 커뮤니티 ? Text không토토 커뮤니티chứa khóa? 'A = 1' :: 토토 커뮤니티? 'Một' T
토토 커뮤니티 ? & Text [] không토토 커뮤니티chứa tất cả các khóa được chỉ định? 'a = 1, b = 2' :: 토토 커뮤니티? & Array ['A', 'B'] T
토토 커뮤니티 ? | Text [] không토토 커뮤니티chứa bất kỳ khóa nào được chỉ định? 'a = 1, b = 2' :: 토토 커뮤니티? | Mảng ['b', 'c'] T
토토 커뮤니티 @ 토토 커뮤니티 Vận hành bên trái có chứa phải không? 'a = b, b = 1, c = null' :: hstore @ 'b = 1' T
토토 커뮤니티 <@ 토토 커뮤니티 là toán hạng bên trái có ở bên phải? 'A = C' :: 토토 커뮤니티 <@ 'a = B, b = 1, c = null' f
토토 커뮤니티 - Text Xóa phím từ toán hạng bên trái 'a = 1, b = 2, c = 3' :: 토토 커뮤니티 - 'b' :: text "A" = "1", "C" = "3"
토토 커뮤니티 - Text [] Xóa các phím từ toán hạng bên trái 'a = 1, b = 2, c = 3' :: 토토 커뮤니티 - mảng ['a', 'b'] "C" = "3"
토토 커뮤니티 - 토토 커뮤니티 Xóa các cặp khớp từ toán hạng bên trái 'a = 1, b = 2, c = 3' :: 토토 커뮤니티 - 'a = 4, b = 2' :: 토토 커뮤니티 "A" = "1", "C" = "3"
Record #= 토토 커뮤니티 Thay thế các trường trongRecordvới các giá trị phù hợp từ토토 커뮤니티 Xem ví dụ phần
%% 토토 커뮤니티 Chuyển đổi토토 커뮤니티Để mảng các khóa và giá trị xen kẽ %% 'a = foo, b = bar' :: hstore a, foo, b, bar
%# 토토 커뮤니티 Chuyển đổi토토 커뮤니티16283_16320 %# '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 không được chấp nhận và cuối cùng sẽ bị xóa. Lưu ý rằng các tên cũ được đảo ngược từ Công ước trước đây là các loại dữ liệu hình học cốt lõi!

Bảng F-9.토토 커뮤니티chức năng

chức năng Loại trả lại Mô tả Ví dụ result
토토 커뮤니티 (ghi) 토토 커뮤니티 Xây dựng một토토 커뮤니티Từ bản ghi hoặc hàng 토토 커뮤니티 (hàng (1,2)) f1 = 1, f2 = 2
토토 커뮤니티 (văn bản []) 토토 커뮤니티 Xây dựng토토 커뮤니티Từ một mảng, có thể là một mảng khóa/giá trị hoặc mảng hai chiều 토토 커뮤니티 (mảng ['a', '1', 'b', '2']) || hstore (mảng [['c', '3'], ['d', '4']])) a = 1, b = 2, c = 3, d = 4
토토 커뮤니티 (văn bản [], văn bản []) 토토 커뮤니티 Xây dựng một토토 커뮤니티Từ các mảng khóa và giá trị riêng biệt 토토 커뮤니티 (mảng ['a', 'b'], mảng ['1', '2']) "A" = "1", "B" = "2"
토토 커뮤니티 (văn bản, văn bản) 토토 커뮤니티 Làm đơn lẻ토토 커뮤니티 토토 커뮤니티 ('A', 'B') "A" = "B"
akeys (토토 커뮤니티) Text [] Nhận토토 커뮤니티S phím như một mảng akeys ('a = 1, b = 2') a, b
SKEYS (토토 커뮤니티) Setof Text GET토토 커뮤니티's Keys As a Set SKEYS ('A = 1, B = 2')
a
B
Avals (토토 커뮤니티) Text [] GET토토 커뮤니티'giá trị dưới dạng mảng Avals ('a = 1, b = 2') 1,2
svals (토토 커뮤니티) Setof Text Nhận토토 커뮤니티s giá trị như một tập hợp svals ('a = 1, b = 2')
1
2
토토 커뮤니티_to_array (토토 커뮤니티) Text [] Get토토 커뮤니티19787_19850 토토 커뮤니티_to_array ('a = 1, b = 2') a, 1, b, 2
토토 커뮤니티_to_matrix (토토 커뮤니티) Text [] get토토 커뮤니티s Keys và giá trị như một mảng hai chiều 토토 커뮤니티_to_matrix ('a = 1, b = 2') a, 1, b, 2
토토 커뮤니티_to_json (토토 커뮤니티) JSON GET토토 커뮤니티như mộtJSONGiá trị, chuyển đổi tất cả các giá trị không null thành chuỗi JSON "A Key": "1", "B": "T", "C": null, "D": "12345", "E": "012345", "F": "1.234"
토토 커뮤니티_to_jsonb (토토 커뮤니티) JSONB GET토토 커뮤니티như mộtJSONBGiá trị, chuyển đổi tất cả các giá trị không null thành chuỗi JSON "A Key": "1", "B": "T", "C": NULL, "D": "12345", "E": "012345", "F": "1.234"
HSTORE_TO_JSON_LOOSE (hstore) json GET토토 커뮤니티như mộtjsonGiá trị, nhưng cố gắng phân biệt các giá trị số và boolean để chúng không được trình bày trong JSON "A Key": 1, "B": True, "C": NULL, "D": 12345, "E": "012345", "F": 1.234, "G"
hstore_to_jsonb_loose (hstore) JSONB GET토토 커뮤니티như mộtJSONBGiá trị, nhưng cố gắng phân biệt các giá trị số và boolean để chúng không được trình bày trong JSON "A Key": 1, "B": True, "C": NULL, "D": 12345, "E": "012345", "F": 1.234, "G"
Slice (토토 커뮤니티, văn bản []) 토토 커뮤니티 Trích xuất một tập hợp con토토 커뮤니티 Slice ('a = 1, b = 2, c = 3' :: 토토 커뮤니티, mảng ['b', 'c', 'x']) "B" = "2", "C" = "3"
mỗi (토토 커뮤니티) setof (văn bản chính, văn bản giá trị) GET토토 커뮤니티'các phím và giá trị như một tập hợp Chọn * từ mỗi ('a = 1, b = 2')
khóa | giá trị
-----+-------
 A | 1
 B | 2
tồn tại (토토 커뮤니티, văn bản) Boolean không토토 커뮤니티chứa khóa? tồn tại ('a = 1', 'a') T
được xác định (토토 커뮤니티, văn bản) Boolean không토토 커뮤니티chứa khôngnullGiá trị cho khóa? được xác định ('a = null', 'a') f
Xóa (토토 커뮤니티, văn bản) 토토 커뮤니티 Xóa cặp với phím khớp Xóa ('A = 1, B = 2', 'B') "A" = "1"
Xóa (토토 커뮤니티, Text []) 토토 커뮤니티 Xóa các cặp với các phím phù hợp Xóa ('a = 1, b = 2, c = 3', mảng ['a', 'b']) "C" = "3"
Xóa (토토 커뮤니티, 토토 커뮤니티) 토토 커뮤니티 Xóa các cặp khớp với các cặp trong đối số thứ hai Xóa ('a = 1, b = 2', 'a = 4, b = 2' :: 토토 커뮤니티) "A" = "1"
Population_Record (Record, 토토 커뮤니티) Record Thay thế các trường trongRecordVới các giá trị phù hợp từ토토 커뮤니티 Xem ví dụ Phần

Lưu ý:hàmhstore_to_jsonđược sử dụng khi토토 커뮤니티Giá trị được đúc thànhJSON. Tương tự như vậy,hstore_to_jsonbđược sử dụng khi토토 커뮤니티Giá trị được đúc thànhjsonb.

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

F.16.3. Chỉ mục

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

Tạo chỉ mục HIDX trên Test토토 커뮤니티 bằng Gist (h);

Tạo chỉ mục HIDX trên Test토토 커뮤니티 bằng Gin (H);

토토 커뮤니티cũng hỗ trợBtreehoặcHashChỉ mục cho=toán tử. Điều này cho phép토토 커뮤니티cộ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 cho토토 커뮤니티Giá trị không đặc biệt hữu ích, nhưng các chỉ mục này có thể hữu ích cho cá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);

Tạo chỉ mục HIDX trên Testhstore bằng băm (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ột토토 커뮤니티:

Tạo thử nghiệm bảng (số nguyên col1, văn bản col2, văn bản col3);
Chèn vào các giá trị kiểm tra (123, 'foo', 'thanh');

Chọn HStore (T) từ thử nghiệm là T;
                   hstore                    
-------------------------------------------------
 "col1" = "123", "col2" = "foo", "col3" = "bar"
(1 hàng)

Chuyển đổi một토토 커뮤니티đến được xác định trướcRecordloại:

Tạo thử nghiệm bảng (số nguyên col1, văn bản col2, văn bản col3);

Chọn * Từ population_record (null :: test,
                              '"col1" = "456", "col2" = "zzz"');
 col1 | col2 | col3 
------+------+------
  456 | zzz | 
(1 hàng)

Sửa đổi bản ghi hiện có bằng cách sử dụng các giá trị từ토토 커뮤니티:

Tạo thử nghiệm bảng (số nguyên col1, văn bản col2, văn bản col3);
Chèn vào các giá trị kiểm tra (123, 'foo', 'thanh');

Chọn (r).* Từ (chọn t #= '"col3" = "Baz"' làm r từ thử nghiệm t) s;
 col1 | col2 | col3 
------+------+------
  123 | foo | Baz
(1 hàng)

F.16.5. Thống kê

The토토 커뮤니티Loạ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 các khóa hợp lệ là nhiệm vụ của ứng dụng. Các ví dụ sau đây chứng minh một số kỹ thuật để kiểm tra các khóa và có được số liệu thống kê.

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ừ
  (Chọn (mỗi (h)). Khóa từ Testhstore) làm chỉ số
  Nhóm theo khóa
  Đặt hàng theo đếm desc, khóa;
    chìa khóa | đếm
-----------+-------
 dòng |   883
 Truy vấn |   207
 pos |   203
 nút |   202
 Không gian |   197
 trạng thái |   195
 công khai |   194
 Tiêu đề |   190
 org |   189
...................

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

Kể từ Postgresql 9.0,토토 커뮤니티Sử dụng biểu diễn nội bộ khác với các 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 tăng đượ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ó thể buộc nâng cấp tất cả các giá trị trong cột bảng bằng cách thực hiệnCập nhậtCâu như sau:

CẬP NHẬT TABLENAME SET HSTORECOL = hstorecol || '';

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

30070_30144

TheBảng thay đổiPhương thức yêu cầu khóa độc quyền trên bảng, nhưng không dẫn đến việc làm cho bảng với các phiên bản hàng cũ.

F.16.7. 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