윈 토토 : 문서 : 9.4 : 윈 토토 9.4 | |||
---|---|---|---|
토토 커뮤니티 : 문서 : 9.4 : fuzzystrmatch | PostgreSQL : 문서 : 9.4 : 추가 제공 배트맨 토토 | Phụ lục F. Các mô -đun được cung cấp bổ sung | 토토 사이트 추천 : 문서 : 9.4 : Intagg |
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.
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.
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@và<@được gọi là@và~, 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àm
hstore_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àm
Population_Record
thự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.
토토 커뮤니티Hỗ trợ Chỉ số Gist và Gin cho@, ?, ? &và? |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);
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)
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 ...................
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ũ.
Oleg Bartunov<leg@sai.msu.su
, Moscow, Đại học Moscow, Nga
Teodor Sigaev<teodor@sigaev.ru
, Moscow, Delta-Soft Ltd., Nga
Cải tiến bổ sung của Andrew Gierth<andrew@tao11.riddles.org.uk
, Vương quốc Anh