Tính năng đối kèo chấp bóng đá hôm nay cho phép chỉ định hành vi phân loại ký tự và sắp xếp của dữ liệu trên mỗi cột hoặc thậm chí là hoạt động. Điều này làm giảm bớt hạn chế rằnglc_collate
vàlc_ctype
Cài đặt của cơ sở dữ kèo chấp bóng đá hôm nay không thể thay đổi sau khi tạo.
Về mặt khái niệm, mọi biểu thức của một loại dữ liệu có kết hợp đều có sự đối kèo chấp bóng đá hôm nay. (Các kiểu dữ liệu có chứa có thể tích hợp làText
,Varchar
vàchar
. Các loại cơ sở do người dùng xác định cũng có thể được đánh dấu có thể có được kết hợp, và tất nhiên một miền trên một loại dữ liệu có thể có được có thể có được.) Nếu biểu thức là một tham kèo chấp bóng đá hôm nay cột, sự hợp tác của biểu thức là sự đối kèo chấp bóng đá hôm nay được xác định của cột.
Sự đối kèo chấp bóng đá hôm nay của một biểu thức có thể làHồimặc địnhHồiđối kèo chấp bóng đá hôm nay, có nghĩa là các cài đặt địa phương được xác định cho cơ sở dữ liệu. Cũng có thể đối kèo chấp bóng đá hôm nay của một biểu thức không được xác định.
Khi hệ thống cơ sở dữ liệu phải thực hiện đặt hàng hoặc phân loại ký tự, nó sử dụng đối kèo chấp bóng đá hôm nay của biểu thức đầu vào. Điều này xảy ra, ví dụ, vớiĐặt hàng bởi
kèo chấp bóng đá hôm nay mệnh đề và chức năng hoặc kèo chấp bóng đá hôm nay cuộc gọi toán tử như<
. Đối kèo chấp bóng đá hôm nay để áp dụng cho mộtĐặt hàng bởi
mệnh đề chỉ đơn giản là sự đối kèo chấp bóng đá hôm nay của phím sắp xếp. Việc đối kèo chấp bóng đá hôm nay để áp dụng cho một chức năng hoặc cuộc gọi toán tử được lấy từ các đối số, như được mô tả dưới đây.Hạ
,trên
vàinitCap
; bằng cách kết hợp kèo chấp bóng đá hôm nay toán tử phù hợp với mẫu;to_char
và kèo chấp bóng đá hôm nay chức năng liên quan.
Đối với lệnh gọi chức năng hoặc toán tử, đối kèo chấp bóng đá hôm nay có nguồn gốc bằng cách kiểm tra các đối số đối số được sử dụng tại thời gian chạy để thực hiện thao tác được chỉ định. Nếu kết quả của chức năng hoặc lệnh gọi toán tử là loại dữ liệu có thể kết hợp, thì đối kèo chấp bóng đá hôm nay cũng được sử dụng vào thời gian phân tích.
TheĐạo hàm đối kèo chấp bóng đá hôm naycủa một biểu thức có thể được ẩn hoặc rõ ràng. Sự khác biệt này ảnh hưởng đến cách các đối kèo chấp bóng đá hôm nay được kết hợp khi nhiều đối kèo chấp bóng đá hôm nay khác nhau xuất hiện trong một biểu thức.đối kèo chấp bóng đá hôm nay
mệnh đề được sử dụng; Tất cả các dẫn xuất đối kèo chấp bóng đá hôm nay khác là tiềm ẩn.
Nếu bất kỳ biểu thức đầu vào nào có đạo hàm đối kèo chấp bóng đá hôm nay rõ ràng, thì tất cả các đối kèo chấp bóng đá hôm nay có nguồn gốc rõ ràng giữa các biểu thức đầu vào phải giống nhau, nếu không một lỗi được nêu ra. Nếu có bất kỳ đối kèo chấp bóng đá hôm nay có nguồn gốc rõ ràng có mặt, đó là kết quả của sự kết hợp đối kèo chấp bóng đá hôm nay.
Nếu không, tất cả các biểu thức đầu vào phải có cùng một đạo hàm đối kèo chấp bóng đá hôm nay ngầm hoặc đối kèo chấp bóng đá hôm nay mặc định. Nếu có bất kỳ đối kèo chấp bóng đá hôm nay không mặc định có mặt, đó là kết quả của sự kết hợp đối kèo chấp bóng đá hôm nay.
Nếu có các đối kèo chấp bóng đá hôm nay ngầm không mặc định xung đột giữa các biểu thức đầu vào, thì sự kết hợp được coi là có đối kèo chấp bóng đá hôm nay không xác định. Đây không phải là một điều kiện lỗi trừ khi chức năng cụ thể được gọi đòi hỏi kiến thức về đối kèo chấp bóng đá hôm nay mà nó nên áp dụng.
Ví dụ, hãy xem xét định nghĩa bảng này:
Tạo bảng Test1 (
Sau đó trong
Chọn <'foo' từ Test1;
The<
So sánh được thực hiện theode_de
Quy tắc, bởi vì biểu thức kết hợp một đối kèo chấp bóng đá hôm nay có nguồn gốc ngầm với đối kèo chấp bóng đá hôm nay mặc định. Nhưng trong
Chọn <('foo' đối kèo chấp bóng đá hôm nay "FR_FR") từ Test1;
So sánh được thực hiện bằng cách sử dụngFR_FR
Quy tắc, bởi vì dẫn xuất đối kèo chấp bóng đá hôm nay rõ ràng ghi đè lên một trong những ẩn ý. Hơn nữa, đã cho
Chọn A <B từ Test1;
Trình phân tích cú pháp không thể xác định đối kèo chấp bóng đá hôm nay nào sẽ áp dụng, vìA
vàB
Các cột có các đối kèo chấp bóng đá hôm nay ngầm xung đột. Kể từ<
Nhà điều hành không cần biết sử dụng đối kèo chấp bóng đá hôm nay nào, điều này sẽ dẫn đến lỗi. Lỗi có thể được giải quyết bằng cách đính kèm trình xác định đối kèo chấp bóng đá hôm nay rõ ràng vào biểu thức đầu vào, do đó:
Chọn A <B Collate "DE_DE" từ Test1;
hoặc tương đương
Chọn một đối kèo chấp bóng đá hôm nay "de_de" <b từ test1;
Mặt khác, trường hợp tương tự về mặt cấu trúc
Chọn A || B từ Test1;
không dẫn đến lỗi, vì||
Nhà điều hành không quan tâm đến các đối thủ: Kết quả của nó là như nhau bất kể đối kèo chấp bóng đá hôm nay.
Trụ đồng được gán cho chức năng hoặc biểu thức đầu vào kết hợp của toán tử cũng được coi là áp dụng cho kết quả của hàm hoặc toán tử, nếu hàm hoặc toán tử cung cấp kết quả của loại dữ kèo chấp bóng đá hôm nay có thể ghép. Vì vậy, trong
Chọn * từ Đơn hàng Test1 của A || 'foo';
Đặt hàng sẽ được thực hiện theode_de
Quy tắc. Nhưng truy vấn này:
Chọn * Từ đơn đặt hàng Test1 của A || B;
dẫn đến lỗi, vì mặc dù||
Nhà điều hành không cần biết đối kèo chấp bóng đá hôm nay,Đặt hàng bởi
mệnh đề không. Như trước đây, xung đột có thể được giải quyết với một trình xác định đối kèo chấp bóng đá hôm nay rõ ràng:
Chọn * Từ Đơn hàng Test1 của A || B đối kèo chấp bóng đá hôm nay "FR_FR";
Một đối kèo chấp bóng đá hôm nay là một đối tượng lược đồ SQL ánh xạ tên SQL cho các địa phương được cung cấp bởi các thư viện được cài đặt trong hệ điều hành. Một định nghĩa đối kèo chấp bóng đá hôm nay có mộtnhà cung cấpChỉ định thư viện nào cung cấp dữ kèo chấp bóng đá hôm nay địa phương. Một tên nhà cung cấp tiêu chuẩn làLIBC
, sử dụng kèo chấp bóng đá hôm nay địa phương được cung cấp bởi thư viện hệ điều hành C. Đây là những địa phương mà hầu hết kèo chấp bóng đá hôm nay công cụ được cung cấp bởi hệ điều hành sử dụng.ICU
, sử dụng ICU bên ngoàiThư viện. kèo chấp bóng đá hôm nay địa phương ICU chỉ có thể được sử dụng nếu hỗ trợ cho ICU được cấu hình khi PostgreSQL được xây dựng.
Một đối tượng đối kèo chấp bóng đá hôm nay được cung cấp bởiLIBC
Bản đồ cho sự kết hợp củalc_collate
vàlc_ctype
Cài đặt, được chấp nhận bởisetlocale ()
Cuộc gọi thư viện hệ thống. (Như tên sẽ đề xuất, mục đích chính của một đối kèo chấp bóng đá hôm nay là đặtlc_collate
, kiểm soát thứ tự sắp xếp. Nhưng nó hiếm khi cần thiết trong thực tế để có mộtlc_ctype
Cài đặt khác vớilc_collate
, vì vậy sẽ thuận tiện hơn khi thu thập những điều này theo một khái niệm hơn là tạo ra một cơ sở hạ tầng khác để thiết lậplc_ctype
mỗi biểu thức.) Ngoài ra, ALIBC
đối kèo chấp bóng đá hôm nay được gắn với mã hóa bộ ký tự (xemPhần 23.3). Cùng tên đối kèo chấp bóng đá hôm nay có thể tồn tại cho các mã hóa khác nhau.
Một đối tượng đối kèo chấp bóng đá hôm nay được cung cấp bởiICU
Bản đồ cho một bộ thu thập được đặt tên được cung cấp bởi thư viện ICU. ICU không hỗ trợ riêng biệtđối kèo chấp bóng đá hôm nayHồivàCtypeHồiCài đặt, vì vậy chúng luôn giống nhau. Ngoài ra, các đối kèo chấp bóng đá hôm nay ICU độc lập với mã hóa, do đó, luôn có một đối kèo chấp bóng đá hôm nay ICU của một tên nhất định trong cơ sở dữ liệu.
Trên tất cả các nền tảng, các đối kèo chấp bóng đá hôm nay có tênmặc định
,C
vàPOSIX
có sẵn. Các đối kèo chấp bóng đá hôm nay bổ sung có thể có sẵn tùy thuộc vào hỗ trợ hệ điều hành.mặc định
đối kèo chấp bóng đá hôm nay chọnlc_collate
vàlc_ctype
Giá trị được chỉ định tại thời gian tạo cơ sở dữ kèo chấp bóng đá hôm nay. TheC
vàPOSIX
Collations Cả hai chỉ địnhHồitruyền thống CHồiHành vi, chỉ trong đó kèo chấp bóng đá hôm nay chữ cái ASCIIA
HồiđếnHồiZ
xôngđược coi là chữ cái và việc sắp xếp được thực hiện hoàn toàn theo giá trị byte mã ký tự.
Ngoài ra, tên đối kèo chấp bóng đá hôm nay tiêu chuẩn SQLUCS_BASIC
có sẵn để mã hóaUTF8
. Nó tương đương vớiC
và sắp xếp theo điểm mã Unicode.
Nếu hệ điều hành cung cấp hỗ trợ sử dụng nhiều địa phương trong một chương trình (Newlocale
và kèo chấp bóng đá hôm nay chức năng liên quan) hoặc nếu hỗ trợ cho ICU được cấu hình, thì khi cụm cơ sở dữ liệu được khởi tạo,initDB
điền vào danh mục hệ thốngPG_Collation
Với các đối kèo chấp bóng đá hôm nay dựa trên tất cả các địa phương mà nó tìm thấy trong hệ điều hành tại thời điểm đó.
Để kiểm tra kèo chấp bóng đá hôm nay địa phương hiện có, sử dụng truy vấnChọn * từ pg_collation
hoặc lệnh\ dos+
inPSQL.
Ví dụ: hệ điều hành có thể cung cấp một địa điểm có tênde_de.utf8
.initDB
Sau đó sẽ tạo một đối kèo chấp bóng đá hôm nay có tênde_de.utf8
để mã hóaUTF8
Có cả hailc_collate
vàlc_ctype
Đặt thànhde_de.utf8
. Nó cũng sẽ tạo ra một sự đối kèo chấp bóng đá hôm nay với.UTF8
TAG bị loại bỏ tên. Vì vậy, bạn cũng có thể sử dụng đối kèo chấp bóng đá hôm nay dưới tênde_de
, ít cồng kềnh hơn để viết và làm cho tên ít phụ thuộc vào mã hóa. Lưu ý rằng, tuy nhiên, tập hợp các tên đối kèo chấp bóng đá hôm nay ban đầu phụ thuộc vào nền tảng.
tập hợp mặc định được cung cấp bởiLIBC
Bản đồ trực tiếp đến kèo chấp bóng đá hôm nay địa phương được cài đặt trong hệ điều hành, có thể được liệt kê bằng lệnhLocale -A
. Trong trường hợp ALIBC
đối kèo chấp bóng đá hôm nay là có các giá trị khác nhau cholc_collate
vàlc_ctype
hoặc nếu kèo chấp bóng đá hôm nay địa phương mới được cài đặt trong hệ điều hành sau khi hệ thống cơ sở dữ liệu được khởi tạo, thì có thể được tạo đối đồng mới bằng cách sử dụngTạo đối kèo chấp bóng đá hôm nayLệnh. kèo chấp bóng đá hôm nay địa phương hệ điều hành mới cũng có thể được nhập khẩu bằng cách sử dụngpg_import_system_collations ()
chức năng.
Trong bất kỳ cơ sở dữ liệu cụ thể nào, chỉ các đối kèo chấp bóng đá hôm nay sử dụng mã hóa cơ sở dữ liệu đó được quan tâm. Các mục khác trongpg_collation
bị bỏ qua. Do đó, một tên đối kèo chấp bóng đá hôm nay bị tước nhưde_de
có thể được coi là duy nhất trong một cơ sở dữ liệu nhất định mặc dù nó sẽ không phải là duy nhất trên toàn cầu. Việc sử dụng các tên đối kèo chấp bóng đá hôm nay bị tước được khuyến nghị, vì nó sẽ làm cho một điều bạn cần thay đổi ít hơn nếu bạn quyết định thay đổi sang mã hóa cơ sở dữ liệu khác.mặc định
,C
vàPOSIX
đối kèo chấp bóng đá hôm nay có thể được sử dụng bất kể mã hóa cơ sở dữ liệu.
PostgreSQLcoi các đối tượng đối kèo chấp bóng đá hôm nay khác biệt là không tương thích ngay cả khi chúng có các thuộc tính giống hệt nhau. Do đó, ví dụ,
Chọn một đối kèo chấp bóng đá hôm nay "C" <b đối kèo chấp bóng đá hôm nay "POSIX" từ Test1;
sẽ vẽ lỗi mặc dùC
vàPOSIX
đối kèo chấp bóng đá hôm nay có những hành vi giống hệt nhau. Do đó, trộn các tên đối kèo chấp bóng đá hôm nay bị tước và không dải không được khuyến khích.
Với ICU, không hợp lý để liệt kê tất cả kèo chấp bóng đá hôm nay tên địa phương có thể. ICU sử dụng một hệ thống đặt tên cụ thể cho kèo chấp bóng đá hôm nay địa phương, nhưng có nhiều cách để đặt tên cho một địa phương hơn là có kèo chấp bóng đá hôm nay địa phương thực sự khác biệt.initDB
Sử dụng API ICU để trích xuất một tập hợp các địa phương riêng biệt để điền vào bộ đối kèo chấp bóng đá hôm nay ban đầu. Các đối kèo chấp bóng đá hôm nay do ICU cung cấp được tạo trong môi trường SQL với tên ở định dạng thẻ ngôn ngữ BCP 47, vớisử dụng riêng tưHồiMở rộng-x-ICU
Được thêm vào, để phân biệt chúng với kèo chấp bóng đá hôm nay địa phương LIBC.
Dưới đây là một số đối kèo chấp bóng đá hôm nay ví dụ có thể được tạo:
de-x-icu
đối kèo chấp bóng đá hôm nay tiếng Đức, biến thể mặc định
de-at-x-icu
đối kèo chấp bóng đá hôm nay tiếng Đức cho Áo, biến thể mặc định
(cũng có, nói,de-de-x-icu
hoặcDE-CH-X-ICU
, nhưng khi viết bài này, chúng tương đương vớide-x-icu
.)
UND-X-ICU
(chokhông xác định)ICUHồirootđối kèo chấp bóng đá hôm nay. Sử dụng điều này để có được một thứ tự sắp xếp ngôn ngữ-bất khả tri hợp lý.
Một số mã hóa (ít được sử dụng) không được ICU hỗ trợ. Khi mã hóa cơ sở dữ liệu là một trong số này, các mục đối kèo chấp bóng đá hôm nay ICU trongpg_collation
bị bỏ qua. Cố gắng sử dụng một người sẽ vẽ lỗi dọc theo kèo chấp bóng đá hôm nay dòngĐối kèo chấp bóng đá hôm nay "de-x-icu" để mã hóa "Win874" không tồn tại.
Nếu các đối kèo chấp bóng đá hôm nay tiêu chuẩn và được xác định trước là không đủ, người dùng có thể tạo các đối tượng đối kèo chấp bóng đá hôm nay của riêng họ bằng lệnh SQLTạo đối kèo chấp bóng đá hôm nay.
Các đối kèo chấp bóng đá hôm nay tiêu chuẩn và được xác định trước nằm trong lược đồpg_catalog
, giống như tất cả các đối tượng được xác định trước. Các đối kèo chấp bóng đá hôm nay do người dùng xác định nên được tạo trong các lược đồ người dùng.pg_dump
.
Các đối kèo chấp bóng đá hôm nay LIBC mới có thể được tạo như thế này:
Tạo tiếng Đức đối kèo chấp bóng đá hôm nay (nhà cung cấp = libc, locale = 'de_de');
kèo chấp bóng đá hôm nay giá trị chính xác được chấp nhận choLocale
mệnh đề trong lệnh này phụ thuộc vào hệ điều hành. Trên kèo chấp bóng đá hôm nay hệ thống giống UNIX, lệnhLocale -A
sẽ hiển thị danh sách.
Vì các đối kèo chấp bóng đá hôm nay LIBC được xác định trước đã bao gồm tất cả các đối kèo chấp bóng đá hôm nay được xác định trong hệ điều hành khi thể hiện cơ sở dữ liệu được khởi tạo, thường không cần thiết phải tạo thủ công. Lý do có thể là nếu một hệ thống đặt tên khác được mong muốn (trong trường hợp đó xem thêmPhần 23.2.2.3.3) Hoặc nếu hệ điều hành đã được nâng cấp để cung cấp kèo chấp bóng đá hôm nay định nghĩa địa phương mới (trong trường hợp đó xem thêmpg_import_system_collations ()
).
ICU cho phép các đối kèo chấp bóng đá hôm nay được tùy chỉnh vượt ra ngoài ngôn ngữ cơ bản+tập hợp quốc gia được tải trướcinitDB
. Người dùng được khuyến khích xác định các đối tượng đối kèo chấp bóng đá hôm nay của riêng họ sử dụng các cơ sở này để phù hợp với hành vi sắp xếp theo yêu cầu của họ.https: //unicode-org.github.io/icu/userguide/locale/vàhttps: //unicode-org.github.io/icu/userguide/collation/api.htmlĐể biết thông tin về đặt tên địa phương ICU. Tập hợp kèo chấp bóng đá hôm nay tên và thuộc tính được chấp nhận phụ thuộc vào phiên bản ICU cụ thể.
Đây là một số ví dụ:
Tạo đối kèo chấp bóng đá hôm nay "de-u-co-điện thoại
Tạo đối kèo chấp bóng đá hôm nay "de-u-co-điện thoại
đối kèo chấp bóng đá hôm nay tiếng Đức với loại đối kèo chấp bóng đá hôm nay trong danh sách điện thoại
Ví dụ đầu tiên chọn ngôn ngữ ICU bằng cách sử dụngMạnhTag ngôn ngữHàngmỗi BCP 47. Ví dụ thứ hai sử dụng cú pháp địa phương cụ thể ICU truyền thống. Kiểu đầu tiên được ưa thích trong tương lai, nhưng nó không được hỗ trợ bởi kèo chấp bóng đá hôm nay phiên bản ICU cũ hơn.
Lưu ý rằng bạn có thể đặt tên cho các đối tượng đối kèo chấp bóng đá hôm nay trong môi trường SQL bất cứ điều gì bạn muốn. Trong ví dụ này, chúng tôi theo kiểu đặt tên mà các đối kèo chấp bóng đá hôm nay được xác định trước sử dụng, từ đó cũng theo BCP 47, nhưng điều đó không bắt buộc đối với các đối kèo chấp bóng đá hôm nay do người dùng xác định.
30804_30890
30949_31037
đối kèo chấp bóng đá hôm nay gốc với loại đối kèo chấp bóng đá hôm nay biểu tượng cảm xúc, theo tiêu chuẩn kỹ thuật unicode #51
Quan sát làm thế nào trong hệ thống đặt tên địa phương ICU truyền thống, ngôn ngữ gốc được chọn bởi một chuỗi trống.
Tạo đối kèo chấp bóng đá hôm nay latinlast (nhà cung cấp = icu, locale = 'en-u-kr-grek-latn');
Tạo đối kèo chấp bóng đá hôm nay latinlast (nhà cung cấp = icu, locale = 'en@colreorder = grek-latn');
Sắp xếp kèo chấp bóng đá hôm nay chữ cái Hy Lạp trước kèo chấp bóng đá hôm nay chữ Latin. (Mặc định là tiếng Latin trước tiếng Hy Lạp.)
Tạo đối kèo chấp bóng đá hôm nay UpperFirst (nhà cung cấp = icu, locale = 'en-u-kf-upper');
Tạo đối kèo chấp bóng đá hôm nay trên
Sắp xếp kèo chấp bóng đá hôm nay chữ cái trên trường hợp chữ cái trước khi kèo chấp bóng đá hôm nay chữ cái chữ thường. (Mặc định là kèo chấp bóng đá hôm nay chữ cái chữ thường đầu tiên.)
Tạo đối kèo chấp bóng đá hôm nay đặc biệt (nhà cung cấp = icu, locale = 'en-u-kf-upp
32374_32473
Kết hợp cả hai tùy chọn trên.
Tạo số đối kèo chấp bóng đá hôm nay (nhà cung cấp = icu, locale = 'en-u-kk-true');
Tạo số đối kèo chấp bóng đá hôm nay (nhà cung cấp = icu, locale = 'en@colnumeric = có');
Đặt hàng số, sắp xếp kèo chấp bóng đá hôm nay chuỗi chữ số theo giá trị số của chúng, ví dụ:A-21
<A-123
(còn được gọi là loại tự nhiên).
xemTiêu chuẩn kỹ thuật Unicode #35vàBCP 47Để biết chi tiết. Danh sách các loại đối kèo chấp bóng đá hôm nay có thể (CO
Subtag) có thể được tìm thấy trongKho lưu trữ CLDR.
Lưu ý rằng trong khi hệ thống này cho phép tạo các đối kèo chấp bóng đá hôm nayBỏ qua trường hợphoặcBỏ qua kèo chấp bóng đá hôm nay điểm nhấnKhănhoặc tương tự (sử dụngKS
khóa), PostgreSQL hiện tại không cho phép các đối kèo chấp bóng đá hôm nay như vậy hành động theo cách không nhạy cảm với trường hợp hoặc điểm nhấn. Bất kỳ chuỗi nào so sánh bằng nhau theo đối kèo chấp bóng đá hôm nay nhưng không phải là byte bằng nhau sẽ được sắp xếp theo giá trị byte của chúng.
Theo thiết kế, ICU sẽ chấp nhận hầu hết mọi chuỗi dưới dạng tên địa phương và khớp với địa phương gần nhất mà nó có thể cung cấp, sử dụng quy trình dự phòng được mô tả trong tài liệu của nó. Do đó, sẽ không có phản hồi trực tiếp nếu một đặc tả đối kèo chấp bóng đá hôm nay được sáng tác bằng cách sử dụng các tính năng mà cài đặt ICU đã cho không thực sự hỗ trợ.
lệnhTạo đối kèo chấp bóng đá hôm naycũng có thể được sử dụng để tạo một đối kèo chấp bóng đá hôm nay mới từ một đối kèo chấp bóng đá hôm nay hiện có, có thể hữu ích để có thể sử dụng tên đối kèo chấp bóng đá hôm nay độc lập với hệ điều hành trong các ứng dụng, tạo tên tương thích hoặc sử dụng đối kèo chấp bóng đá hôm nay cung cấp ICU dưới tên dễ đọc hơn. Ví dụ:
Tạo tiếng Đức đối kèo chấp bóng đá hôm nay từ "de_de";