Postgresql 9.2.24 Tài liệu | ||||
---|---|---|---|---|
배트맨 토토 : 문서 : 9.2 : fuzzystrmatch | UP | Phụ lục F. Các mô -đun được cung cấp bổ sung | 롤 토토 : 문서 : 9.2 : Intagg |
Mô -đun này thực hiện토토 캔Dữ liệu Nhập để lưu trữ các bộ của các cặp khóa/giá trị trong mộtPostgreSQLGiá trị. Điều này có thể được 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 điều đó hiếm khi được kiểm tra, hoặc dữ liệu bán cấu trúc. Chìa 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 không hoặc nhiều hơnKey = giá trịcặp được phân tách bởi 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 tái tạo 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. Kép Các khóa và giá trị bao gồm khoảng trắng, dấu phẩy,=S hoặcs. Để bao gồm báo giá kép hoặc dấu gạch chéo ngược trong một khóa hoặc giá trị, thoát khỏi nó với một dấu gạch chéo ngược.
mỗi khóa trong một토토 캔là duy nhất. Nếu như bạn khai báo토토 캔với trùng lặp Khóa, chỉ có một cái sẽ được lưu trữ trong토토 캔Và không có gì đảm bảo về ý chí nào đượ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 là trường hợp không nhạy cảm. 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 đi qua nó như một hằng số theo nghĩa đen được trích dẫn, sau đó bất kỳ phương tiện nào ký tự và (tùy thuộc vào cài đặt củaStandard_Conforming_StringsCấu hình tham số) các ký tự dấu gạch chéo ngược 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ý chuỗi hằng số.
trên đầu ra, báo giá đôi luôn bao quanh các phím 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ó mặt) | '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ả Khóa được chỉ định? | 'a = 1, b = 2' :: 토토 캔 ? & Mảng ['a', 'b'] | T |
토토 캔 ? | Text [] | không토토 캔chứa bất kỳ các khóa được chỉ định? | 'a = 1, b = 2' :: 토토 캔? | Mảng ['b', 'c'] | T |
토토 캔 15529_15536 토토 캔 | 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 phù hợp từ toán hạng bên trái | 'a = 1, b = 2, C = 3 ':: 토토 캔 -' a = 4, b = 2 ':: hstore | "A" = "1", "C" = "3" |
Record #= 토토 캔 | Thay thế các trường trongRecordVới Kết hợp các giá trị từ토토 캔 | Xem ví dụ Phần | |
%% 토토 캔 | Chuyển đổi토토 캔đến mảng của Khóa và giá trị xen kẽ | %% 'a = foo, B = Bar ':: 토토 캔 | a, foo, b, bar |
%# 토토 캔 | Chuyển đổi토토 캔đến Mảng khóa/giá trị hai chiều | %# 'a = foo, B = Bar ':: 토토 캔 | a, foo, b, bar |
Lưu ý:Trước PostgreSQL 8.2, ngăn chặn người vận hành@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ẽ được gỡ bỏ. Lưu ý rằng các tên cũ bị đảo ngược từ quy ước trước đây là dữ liệu hình học cốt lõi các loạ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ừ a Ghi lại hoặc hàng | 토토 캔 (hàng (1,2)) | f1 = 1, f2 = 2 |
토토 캔 (văn bản []) |
토토 캔 | Xây dựng một토토 캔Từ một mảng, có thể là một mảng khóa/giá trị hoặc một 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 [],
chữ[]) |
토토 캔 | Xây dựng토토 캔Từ 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,
chữ) |
토토 캔 | Làm đơn lẻ토토 캔 | 토토 캔 ('A', 'B') | "A" = "B" |
Akeys (토토 캔) |
Text [] | GET토토 캔s phím mảng | akeys ('a = 1, b = 2') | a, b |
SKEYS (토토 캔) |
Setof Text | get토토 캔21937_21967 | SKEYS ('A = 1, B = 2') |
a B |
Avals (토토 캔) |
Text [] | GET토토 캔s giá trị mảng | Avals ('a = 1, b = 2') | 1,2 |
svals (토토 캔) |
Setof Text | GET토토 캔s giá trị như một bộ | svals ('a = 1, b = 2') |
1 2 |
토토 캔_to_array (토토 캔) |
Text [] | GET토토 캔Các phím và giá trị của Là một mảng các khóa và giá trị xen kẽ | 토토 캔_to_array ('a = 1, b = 2') | a, 1, b, 2 |
토토 캔_to_matrix (토토 캔) |
Text [] | GET토토 캔'của các phím và giá trị Là một mảng hai chiều | 토토 캔_to_matrix ('a = 1, b = 2') | a, 1, b, 2 |
Slice (토토 캔,
chữ[]) |
토토 캔 | 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, giá trị chữ) | 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 |
Đã xác định (토토 캔, Text) |
Boolean | không토토 캔chứa khôngnullGiá trị cho khóa? | Đã 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 phù hợp với các cặp trong lần thứ hai lý lẽ | Xóa ('a = 1, b = 2', 'a = 4, b = 2' :: 토토 캔) | "A" = "1" |
Population_Record (Record, 토토 캔) |
Record | Thay thế các trường trongRecordvới Kết hợp các giá trị từ토토 캔 | Xem ví dụ Phần |
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. Loại Đặt hàng cho토토 캔Giá trị thì không đặc biệt hữu ích, nhưng các chỉ mục này có thể hữu ích cho 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ó với 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ì nó Tự do nội tại, 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 Các ví dụ sau chứng minh một số kỹ thuật để kiểm tra Chìa 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 a Đại diện nội bộ khác nhau so với các phiên bản trước. Cái này Không trình bày không có trở ngại cho việc nâng cấp kết xuất/khôi phục kể từ khi văn bản Biểu diễ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 là đượ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. Nó là có thể buộc nâng cấp tất cả các giá trị trong cột bảng bằng cách đang làmCập nhậtCâu lệnh AS theo sau:
32341_32394
Một cách khác để làm điều đó là:
32468_32544
TheBẢNG ALTERPhương pháp yêu cầu một Khóa độc quyền trên bàn, nhưng không dẫn đến đầy hơi bảng 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