4333_4363#

soi kèo bóng đá truoctran giá trị được sử dụng trong nhiều ngữ cảnh khác nhau, chẳng hạn như trong danh sách mục tiêu củaChọnLệnh, như soi kèo bóng đá truoctran giá trị cột mới trongChènhoặcCập nhậthoặc trong các điều kiện tìm kiếm trong một số lệnh. Kết quả của soi kèo bóng đá truoctran giá trị đôi khi được gọi làvô hướng, để phân biệt nó với kết quả của soi kèo bóng đá truoctran bảng (là một bảng). Do đó, các soi kèo bóng đá truoctran giá trị cũng được gọi làsoi kèo bóng đá truoctran vô hướng(hoặc thậm chí đơn giản làsoi kèo bóng đá truoctran1343_13237

Một soi kèo bóng đá truoctran giá trị là một trong những điều sau:

  • soi kèo bóng đá truoctran giá trị không đổi hoặc nghĩa đen

  • tham chiếu cột

  • Tham chiếu tham số vị trí, trong phần thân của định nghĩa hàm hoặc câu lệnh đã chuẩn bị

  • soi kèo bóng đá truoctran được đăng ký

  • soi kèo bóng đá truoctran lựa chọn trường

  • soi kèo bóng đá truoctran người vận hành gọi

  • soi kèo bóng đá truoctran chức năng gọi

  • Một soi kèo bóng đá truoctran tổng hợp

  • soi kèo bóng đá truoctran chức năng cửa sổ gọi

  • 14197_1424

  • soi kèo bóng đá truoctran đối chiếu

  • 14342_14361

  • Trình xây dựng mảng

  • 14491_1454

  • Một soi kèo bóng đá truoctran giá trị khác trong ngoặc đơn (được sử dụng để nhóm biểu hiện phụ và ghi đè lên mức ưu tiên)

Ngoài danh sách này, có một số cấu trúc có thể được phân loại là một soi kèo bóng đá truoctran nhưng không tuân theo bất kỳ quy tắc cú pháp chung nào. Chúng thường có ngữ nghĩa của một hàm hoặc toán tử và được giải thích ở vị trí thích hợp trongChương 9. soi kèo bóng đá truoctran ví dụ làlà nullmệnh đề.

Chúng ta đã thảo luận soi kèo bóng đá truoctran hằng số trongPhần 4.1.2. soi kèo bóng đá truoctran phần sau thảo luận về soi kèo bóng đá truoctran tùy chọn còn lại.

4.2.1.Tài liệu tham khảo cột#

soi kèo bóng đá truoctran cột có thể được tham chiếu ở dạng:

Tương quan.CộtName

Tương quanlà tên của bảng (có thể đủ điều kiện với tên lược đồ) hoặc bí danh cho soi kèo bóng đá truoctran bảng được xác định bằng phương tiệntừmệnh đề. Tên tương quan và dấu chấm phân tách có thể được bỏ qua nếu tên cột là duy nhất trên tất cả soi kèo bóng đá truoctran bảng được sử dụng trong truy vấn hiện tại.Chương 7.)

4.2.2.Tham số vị trí#

Tham chiếu tham số vị trí được sử dụng để chỉ ra soi kèo bóng đá truoctran giá trị được cung cấp bên ngoài cho câu lệnh SQL. Các tham số được sử dụng trong các định nghĩa chức năng SQL và trong các truy vấn đã chuẩn bị.

$Số

Ví dụ: xem xét định nghĩa của soi kèo bóng đá truoctran hàm,Dept, như:

Tạo chức năng (văn bản) trả về Dept

ở đây$ 1Tài liệu tham khảo giá trị của đối số hàm đầu tiên bất cứ khi nào hàm được gọi.

4.2.3.Đăng ký#

Nếu một soi kèo bóng đá truoctran mang lại giá trị của một loại mảng, thì một phần tử cụ thể của giá trị mảng có thể được trích xuất bằng cách viết

soi kèo bóng đá truoctran[Đăng ký]

hoặc nhiều phần tử liền kề (soi kèo bóng đá truoctranVangSlice Array) có thể được trích xuất bằng cách viết

soi kèo bóng đá truoctran[1864_18627:Upper_subscript]

(ở đây, dấu ngoặc[]có nghĩa là xuất hiện theo nghĩa đen.) MỗiĐăng kýBản thân nó là một soi kèo bóng đá truoctran, sẽ được làm tròn đến giá trị số nguyên gần nhất.

Nói chung là mảngsoi kèo bóng đá truoctranphải được đặt dấu ngoặc đơn, nhưng dấu ngoặc đơn có thể được bỏ qua khi soi kèo bóng đá truoctran được đăng ký chỉ là một tham chiếu cột hoặc tham số vị trí. Ngoài ra, nhiều chỉ số có thể được kết hợp khi mảng ban đầu là đa chiều.

MyTable.ArrayColumn [4]

dấu ngoặc đơn trong ví dụ cuối cùng được yêu cầu. Nhìn thấyPhần 8.15Để biết thêm về mảng.

4.2.4.Lựa chọn trường#

Nếu một soi kèo bóng đá truoctran mang lại giá trị của loại tổng hợp (loại hàng), thì một trường cụ thể của hàng có thể được trích xuất bằng cách viết

soi kèo bóng đá truoctran2048_20111FieldName

Nói chung hàngsoi kèo bóng đá truoctran20246_2044

mytable.mycolumn

(Do đó, tham chiếu cột đủ điều kiện thực sự chỉ là soi kèo bóng đá truoctran trường hợp đặc biệt của cú pháp lựa chọn trường.) soi kèo bóng đá truoctran trường hợp đặc biệt quan trọng là trích xuất soi kèo bóng đá truoctran trường từ cột bảng thuộc loại tổng hợp:

(Compositecol) .Somefield

dấu ngoặc đơn được yêu cầu ở đây để hiển thị rằngCompositecollà tên cột không phải tên bảng hoặc đóMyTablelà tên bảng không phải là tên lược đồ trong trường hợp thứ hai.

2462_21123.*:

(Compositecol).*

Ký hiệu này hoạt động khác nhau tùy thuộc vào ngữ cảnh; nhìn thấyPhần 8.16.5Để biết chi tiết.

4.2.5.Nhiệm vụ vận hành#

Có hai cú pháp có thể xảy ra cho soi kèo bóng đá truoctran lời mời người vận hành:

soi kèo bóng đá truoctran Nhà điều hành soi kèo bóng đá truoctran(Toán tử Infix nhị phân)
Nhà điều hành soi kèo bóng đá truoctran(toán tử tiền tố unary)

trong đóNhà điều hànhMã thông báo tuân theo soi kèo bóng đá truoctran quy tắc cú pháp củaPhần 4.1.3hoặc là soi kèo bóng đá truoctran trong những từ khóa,hoặckhônghoặc là tên toán tử đủ điều kiện trong soi kèo bóng đá truoctran mẫu:

toán tử (lược đồ.operatorname)

22966_2349Chương 9Mô tả soi kèo bóng đá truoctran toán tử tích hợp.

4.2.6.soi kèo bóng đá truoctran cuộc gọi chức năng#

Cú pháp cho soi kèo bóng đá truoctran cuộc gọi chức năng là tên của soi kèo bóng đá truoctran hàm (có thể đủ điều kiện với soi kèo bóng đá truoctran tên lược đồ), theo sau là danh sách đối số của nó được đặt trong ngoặc đơn:

function_name([2394_23922[,soi kèo bóng đá truoctran...]])

Ví dụ: sau đây tính toán căn bậc hai của 2:

sqrt (2)

Danh sách soi kèo bóng đá truoctran chức năng tích hợp trongChương 9. soi kèo bóng đá truoctran chức năng khác có thể được thêm bởi người dùng.

Khi phát hành truy vấn trong cơ sở dữ liệu trong đó soi kèo bóng đá truoctran số người dùng không tin tưởng người dùng khác, hãy quan sát các biện pháp phòng ngừa bảo mật từPhần 4.3Khi viết chức năng gọi.

soi kèo bóng đá truoctran đối số có thể tùy ý có tên được đính kèm. Nhìn thấyPhần 4.3để biết chi tiết.

Lưu ý

soi kèo bóng đá truoctran hàm có soi kèo bóng đá truoctran đối số duy nhất có loại tổng hợp có thể được gọi là bằng cách sử dụng cú pháp lựa chọn trường và ngược lại, lựa chọn trường có thể được viết theo kiểu chức năng. Nghĩa là, các ký hiệucol (bảng)25097_2544Bảng.colcó thể hoán đổi cho nhau. Hành vi này không phải là SQL-Standard nhưng được cung cấp trongPostgreSQLBởi vì nó cho phép sử dụng soi kèo bóng đá truoctran chức năng để mô phỏngMạnhTrường được tính toán. Để biết thêm thông tin, xemPhần 8.16.5.

4.2.7.soi kèo bóng đá truoctran tổng hợp#

26097_2642soi kèo bóng đá truoctran tổng hợpThể hiện ứng dụng của hàm tổng hợp trên các hàng được chọn bởi soi kèo bóng đá truoctran truy vấn. Hàm tổng hợp giảm nhiều đầu vào thành soi kèo bóng đá truoctran giá trị đầu ra duy nhất, chẳng hạn như tổng hoặc trung bình của các đầu vào.

tổng hợp_name(soi kèo bóng đá truoctran[, ...] [order_by_clause]) [bộ lọc (trong đóFilter_Clause)]tổng hợp_name(tất cảsoi kèo bóng đá truoctran[, ...] [order_by_clause]) [bộ lọc (trong đóFilter_Clause)]tổng hợp_name(khác biệtsoi kèo bóng đá truoctran[, ...] [order_by_clause]) [bộ lọc (trong đóFilter_Clause)]tổng hợp_name( *) [bộ lọc (trong đóFilter_Clause)]tổng hợp_name([soi kèo bóng đá truoctran[, ...]]) trong nhóm (order_by_clause) [bộ lọc (trong đóFilter_Clause)]

WHERETổng hợp_namelà tổng hợp được xác định trước đó (có thể đủ điều kiện với tên lược đồ) vàsoi kèo bóng đá truoctranlà bất kỳ soi kèo bóng đá truoctran giá trị nào không chứa soi kèo bóng đá truoctran tổng hợp hoặc lệnh gọi hàm cửa sổ. Tùy chọnorder_by_clauseFilter_Clause2846_28129

Hình thức đầu tiên của soi kèo bóng đá truoctran tổng hợp gọi tổng hợp một lần cho mỗi hàng đầu vào. Biểu mẫu thứ hai giống như hình thức thứ nhất, vìtất cảlà mặc định. Mẫu thứ ba gọi tổng hợp một lần cho từng giá trị riêng biệt của soi kèo bóng đá truoctran (hoặc tập hợp các giá trị riêng biệt, cho nhiều soi kèo bóng đá truoctran) được tìm thấy trong các hàng đầu vào.Count (*)Hàm tổng hợp. Mẫu cuối cùng được sử dụng vớiĐặt hàng-SETHàm tổng hợp, được mô tả bên dưới.

hầu hết các hàm tổng hợp bỏ qua các đầu vào null, để các hàng trong đó một hoặc nhiều soi kèo bóng đá truoctran mang lại NULL được loại bỏ. Điều này có thể được coi là đúng, trừ khi có quy định khác, cho tất cả các tập hợp tích hợp.

Ví dụ:Count (*)mang lại tổng số hàng đầu vào;Count (f1)mang lại số lượng hàng đầu vào trong đóF1không phải là null, vìĐếmbỏ qua nulls; VàCount (khác biệt f1)mang lại số lượng soi kèo bóng đá truoctran giá trị không khác biệt củaF1.

Thông thường, soi kèo bóng đá truoctran hàng đầu vào được đưa vào hàm tổng hợp theo thứ tự không xác định. Trong nhiều trường hợp, điều này không quan trọng;Mintạo ra kết quả tương tự bất kể thứ tự nào nó nhận được các đầu vào. Tuy nhiên, soi kèo bóng đá truoctran số hàm tổng hợp (nhưmảng_aggString_agg) Tạo kết quả phụ thuộc vào thứ tự của soi kèo bóng đá truoctran hàng đầu vào. Khi sử dụng tổng hợp như vậy, tùy chọnorder_by_clausecó thể được sử dụng để chỉ định thứ tự mong muốn. Theorder_by_clausecó cùng cú pháp với mức truy vấnĐặt hàng bởimệnh đề, như được mô tả trongPhần 7.5, ngoại trừ các soi kèo bóng đá truoctran của nó luôn chỉ là các soi kèo bóng đá truoctran và không thể là tên hoặc số cột đầu ra. Ví dụ:

với Vals (V) AS (Giá trị (1), (3), (4), (3), (2))

kể từJSONBChỉ giữ khóa khớp cuối cùng, việc đặt hàng soi kèo bóng đá truoctran khóa của nó có thể có ý nghĩa:

Với Vals (K, V) AS (Giá trị ('Key0', '1'), ('Key1', '3'), ('Key1', '2'))

30976_3449Đặt hàng bởimệnh đề đi sau tất cả soi kèo bóng đá truoctran đối số tổng hợp. Ví dụ: viết cái này:

Chọn String_agg (a, ',' thứ tự bằng a) từ bảng;

Không phải thế này:

Chọn String_Agg (soi kèo bóng đá truoctran thứ tự của a, ',') từ bảng;  -- không đúng

31381_31492Đặt hàng bởiPhím (cái thứ hai khá vô dụng vì nó là hằng số).

nếukhác biệtđược chỉ định vớiorder_by_clause,Đặt hàng bởisoi kèo bóng đá truoctran chỉ có thể tham chiếu các cột trongkhác biệtDanh sách. Ví dụ:

với Vals (v) AS (Giá trị (1), (3), (4), (3), (2))

ĐặtĐặt hàng bởi3241_32338Tập hợp đơn đặt hàngorder_by_clauseYêu cầu, thường là do tính toán của tổng hợp chỉ hợp lý theo soi kèo bóng đá truoctran thứ tự cụ thể của các hàng đầu vào của nó. Các ví dụ điển hình của các tập hợp được đặt hàng bao gồm các tính toán cấp bậc và phần trăm.order_by_clauseđược viết bên trongTrong nhóm (...), như thể hiện trong cú pháp thay thế cuối cùng ở trên. Các soi kèo bóng đá truoctran trongorder_by_clauseđược đánh giá soi kèo bóng đá truoctran lần trên mỗi hàng đầu vào giống như các đối số tổng hợp thông thường, được sắp xếp theoorder_by_clauses yêu cầu và được đưa vào hàm tổng hợp làm đối số đầu vào. (Điều này không giống như trường hợp không phải làtrong nhóm order_by_clause, không được coi là đối số (s) cho hàm tổng hợp.) Các soi kèo bóng đá truoctran đối số trướctrong nhóm, nếu có, được gọi làĐối số trực tiếpĐể phân biệt chúng vớiĐối số tổng hợpđược liệt kê trongorder_by_clause. Không giống như các đối số tổng hợp thông thường, các đối số trực tiếp chỉ được đánh giá soi kèo bóng đá truoctran lần trên mỗi cuộc gọi tổng hợp, không soi kèo bóng đá truoctran lần trên mỗi hàng đầu vào.Nhóm bởi; Hạn chế này giống như khi các đối số trực tiếp không nằm trong một soi kèo bóng đá truoctran tổng hợp.()không(*). (PostgreSQLthực sự sẽ chấp nhận chính tả, nhưng chỉ theo cách đầu tiên phù hợp với tiêu chuẩn SQL.)

soi kèo bóng đá truoctran ví dụ về cuộc gọi tổng hợp được đặt hàng là:

Chọn phần trăm_cont (0,5) trong nhóm (đặt hàng theo thu nhập) từ soi kèo bóng đá truoctran hộ gia đình;

có được giá trị phần trăm thứ 50 hoặc trung bình, củaThu nhậpCột từ bảnghộ gia đình. Đây,0.5là soi kèo bóng đá truoctran đối số trực tiếp; Sẽ không có ý nghĩa gì cho phân số phần trăm là soi kèo bóng đá truoctran giá trị khác nhau giữa các hàng.

35096_3541Filterđược chỉ định, sau đó chỉ soi kèo bóng đá truoctran hàng đầu vào màFilter_ClauseĐánh giá thành true được đưa vào hàm tổng hợp; soi kèo bóng đá truoctran hàng khác bị loại bỏ.

Chọn

soi kèo bóng đá truoctran hàm tổng hợp được xác định trước được mô tả trongPhần 9,21. soi kèo bóng đá truoctran chức năng tổng hợp khác có thể được thêm bởi người dùng.

3584_35874mệnh đề AChọnLệnh. Nó bị cấm trong soi kèo bóng đá truoctran điều khoản khác, chẳng hạn nhưWHERE, bởi vì soi kèo bóng đá truoctran mệnh đề đó được đánh giá hợp lý trước khi kết quả của soi kèo bóng đá truoctran tập hợp được hình thành.

Khi một soi kèo bóng đá truoctran tổng hợp xuất hiện trong một truy vấn con (xemPhần 4.2.11Phần 9.24), Tổng hợp thường được đánh giá trên các hàng của trình điều khiển con. Nhưng soi kèo bóng đá truoctran ngoại lệ xảy ra nếu các đối số của tổng hợp (vàFilter_ClauseNếu có) chỉ chứa các biến cấp bên ngoài: Tổng hợp sau đó thuộc về mức bên ngoài gần nhất như vậy và được đánh giá trên các hàng của truy vấn đó. Toàn bộ soi kèo bóng đá truoctran tổng hợp sau đó là một tham chiếu bên ngoài cho trình điều khiển con mà nó xuất hiện và hoạt động như một hằng số so với bất kỳ một đánh giá nào của trình điều khiển con đó.mệnh đề áp dụng đối với cấp độ truy vấn mà tổng hợp thuộc về.

4.2.8.Hàm Window Calls#

AGọi chức năng cửa sổThể hiện ứng dụng của hàm giống như tổng hợp trên soi kèo bóng đá truoctran phần của các hàng được chọn bởi soi kèo bóng đá truoctran truy vấn. Không giống như các cuộc gọi tổng hợp không cửa sổ, điều này không được gắn với việc nhóm các hàng được chọn thành soi kèo bóng đá truoctran hàng đầu ra duy nhất-mỗi hàng vẫn tách riêng trong đầu ra truy vấn.Phân vùng bởiLiệt kê) cuộc gọi chức năng cửa sổ. Cú pháp của cuộc gọi chức năng cửa sổ là soi kèo bóng đá truoctran trong những điều sau:

function_name([soi kèo bóng đá truoctran[,soi kèo bóng đá truoctran...]]) [bộ lọc (trong đóFilter_Clause)] trênwindow_name
function_name([soi kèo bóng đá truoctran[,soi kèo bóng đá truoctran...]]) [bộ lọc (trong đóFilter_Clause)] Over (38891_3894)function_name( *) [bộ lọc (trong đóFilter_Clause)] trênwindow_name
function_name( *) [bộ lọc (trong đóFilter_Clause)] Over (window_definition)

WHEREwindow_definitionCó cú pháp

[hiện tại_window_name]soi kèo bóng đá truoctran[, ...]]soi kèo bóng đá truoctran[ASC | Desc |Nhà điều hành] [NULLS Đầu tiên | CUỐI CÙNG  ] [, ...] ]frame_clause]

Tùy chọnframe_clausecó thể là soi kèo bóng đá truoctran trong

phạm vi | Hàng |frame_start[frame_exclusion4040_40139frame_startframe_end[frame_exclusion]

WHEREframe_startframe_endcó thể là soi kèo bóng đá truoctran trong

không bị ràng buộc trướcOffsettrướcOffsetsau đây

frame_exclusioncó thể là soi kèo bóng đá truoctran trong

Loại trừ hàng hiện tại

ở đây,soi kèo bóng đá truoctranđại diện cho bất kỳ soi kèo bóng đá truoctran giá trị nào không chứa các cuộc gọi hàm cửa sổ.

window_namelà soi kèo bóng đá truoctran tham chiếu đến soi kèo bóng đá truoctran đặc tả cửa sổ được đặt tên được xác định trong truy vấn củaWindowmệnh đề. Ngoài ra, đầy đủwindow_definitioncó thể được đưa ra trong ngoặc đơn, sử dụng cùng soi kèo bóng đá truoctran cú pháp như để xác định soi kèo bóng đá truoctran cửa sổ được đặt tên trongWindowmệnh đề; Xem​​ChọnTrang tham khảo để biết chi tiết. Nó đáng để chỉ ra rằngOver wnamekhông chính xác tương đương vớiOver (wname ...); Cái sau ngụ ý sao chép và sửa đổi định nghĩa cửa sổ và sẽ bị từ chối nếu thông số kỹ thuật cửa sổ được tham chiếu bao gồm soi kèo bóng đá truoctran mệnh đề khung.

ThePhân vùng bởinhóm mệnh đề soi kèo bóng đá truoctran hàng của truy vấn thànhphân vùng, được xử lý riêng bởi hàm cửa sổ.Phân vùng bởiHoạt động tương tự như mức truy vấnNhóm bởimệnh đề, ngoại trừ các soi kèo bóng đá truoctran của nó luôn chỉ là các soi kèo bóng đá truoctran và không thể là tên hoặc số cột đầu ra. Không cóPhân vùng bởi, tất cả các hàng được sản xuất bởi truy vấn được coi là soi kèo bóng đá truoctran phân vùng duy nhất. TheĐặt hàng bởiĐiều khoản xác định thứ tự trong đó soi kèo bóng đá truoctran hàng của phân vùng được xử lý bởi hàm cửa sổ. Nó hoạt động tương tự như cấp truy vấnĐặt hàng bởimệnh đề, nhưng tương tự không thể sử dụng tên hoặc số cột đầu ra. Không cóĐặt hàng bởi, hàng được xử lý theo thứ tự không xác định.

Theframe_clauseChỉ định tập hợp soi kèo bóng đá truoctran hàng cấu thànhkhung cửa sổ, là soi kèo bóng đá truoctran tập hợp con của phân vùng hiện tại, cho các chức năng cửa sổ hoạt động trên khung thay vì toàn bộ phân vùng. Tập hợp các hàng trong khung có thể thay đổi tùy thuộc vào hàng nào là hàng hiện tại.phạm vi,hànghoặcNhómchế độ; Trong mỗi trường hợp, nó chạy từframe_startđếnframe_end. Nếu nhưframe_endbị bỏ qua, phần cuối mặc định làhàng hiện tại.

Aframe_startcủaKhông bị ràng buộc trướccó nghĩa là khung bắt đầu với hàng đầu tiên của phân vùng và tương tự Aframe_endcủaKhông giới hạn sauCó nghĩa là khung kết thúc bằng hàng cuối cùng của phân vùng.

inphạm vihoặcNhómMODE, Aframe_startcủahàng hiện tạiCó nghĩa là khung bắt đầu với hàng đầu tiên của hàng hiện tạiPeerhàng (soi kèo bóng đá truoctran hàng mà cửa sổĐặt hàng bởimệnh đề sắp xếp tương đương với hàng hiện tại), trong khi Aframe_endcủahàng hiện tạiCó nghĩa là khung kết thúc với hàng đồng đẳng cuối cùng của hàng hiện tại. TRONGhàngMode,hàng hiện tạiĐơn giản có nghĩa là hàng hiện tại.

trongOffset trướcOffset sauTùy chọn khung, TheOffsetphải là một soi kèo bóng đá truoctran không chứa bất kỳ biến nào, hàm tổng hợp hoặc hàm cửa sổ. Ý nghĩa củaOffsetphụ thuộc vào chế độ khung:

  • inhàngMODE, TheOffsetphải mang lại số nguyên không phải null, không âm và tùy chọn có nghĩa là khung bắt đầu hoặc kết thúc số lượng hàng được chỉ định trước hoặc sau hàng hiện tại.

  • inNhómMODE, TheOffsetsoi kèo bóng đá truoctran lần nữa phải mang lại soi kèo bóng đá truoctran số nguyên không âm, không âm và tùy chọn có nghĩa là khung bắt đầu hoặc kết thúc số lượng được chỉ định củaNhóm ngang hàngTrước hoặc sau nhóm ngang hàng của hàng hiện tại, trong đó soi kèo bóng đá truoctran nhóm ngang hàng là soi kèo bóng đá truoctran tập hợp các hàng tương đương vớiĐặt hàng bởiĐặt hàng. (Phải có soi kèo bóng đá truoctranĐặt hàng bởimệnh đề trong định nghĩa cửa sổ để sử dụngNhómchế độ.)

  • inphạm vi4649_46149Đặt hàng bởimệnh đề Chỉ định chính xác soi kèo bóng đá truoctran cột. TheOffsetChỉ định chênh lệch tối đa giữa giá trị của cột đó trong hàng hiện tại và giá trị của nó trong soi kèo bóng đá truoctran hàng trước hoặc sau của khung. Kiểu dữ liệu củaOffsetsoi kèo bóng đá truoctran khác nhau tùy thuộc vào loại dữ liệu của cột đặt hàng. Đối với các cột đặt hàng số, nó thường có cùng loại với cột đặt hàng, nhưng đối với các cột đặt hàng DateTime, nó là mộtKhoảng. Ví dụ: nếu cột đặt hàng thuộc loạingàyhoặcTimestamp, người ta có thể viếtPhạm vi từ '1 ngày' trước và '10 ngày 'sau. TheOffset4748_47122Hồiphụ thuộc vào kiểu dữ liệu của nó.

Trong mọi trường hợp, khoảng cách đến cuối khung được giới hạn bởi khoảng cách đến cuối phân vùng, do đó đối với soi kèo bóng đá truoctran hàng gần phân vùng kết thúc khung có thể chứa ít hàng hơn ở nơi khác.

Lưu ý rằng trong cả haihàngNhómMode,0 trước0 sautương đương vớihàng hiện tại. Điều này thường giữ trongphạm viChế độ, cho soi kèo bóng đá truoctran ý nghĩa cụ thể theo loại dữ liệu phù hợp củaZero.

The47893_479447920_48079Loại trừ hàng hiện tạiLoại trừ hàng hiện tại khỏi khung.Loại trừ nhómLoại trừ hàng hiện tại và soi kèo bóng đá truoctran đồng nghiệp đặt hàng của nó khỏi khung.48296_4834Loại trừ bất kỳ đồng nghiệp nào của hàng hiện tại khỏi khung, nhưng không phải hàng hiện tại.Không có người khácChỉ cần chỉ định rõ ràng hành vi mặc định của không loại trừ hàng hiện tại hoặc soi kèo bóng đá truoctran đồng nghiệp của nó.

Tùy chọn đóng khung mặc định làHàng | không bị ràng buộc trước, giống nhưPhạm vi giữa hàng trước không bị ràng buộc và hàng hiện tại. VớiĐặt hàng bởi, Điều này đặt khung thành tất cả soi kèo bóng đá truoctran hàng từ phân vùng khởi động thông qua hàng cuối cùng của hàng hiện tạiĐặt hàng bởingang hàng. Không cóĐặt hàng bởi, Điều này có nghĩa là tất cả soi kèo bóng đá truoctran hàng của phân vùng được bao gồm trong khung cửa sổ, vì tất cả soi kèo bóng đá truoctran hàng trở thành đồng nghiệp của hàng hiện tại.

4942_49126frame_startkhông thể4924_49231,frame_endkhông thểkhông bị ràng buộc trướcframe_endLựa chọn không thể xuất hiện sớm hơn trong danh sách trênframe_startframe_endTùy chọn hơnframe_startLựa chọn không - ví dụPhạm vi giữa hàng hiện tại vàOffsettrướckhông được phép. Nhưng, ví dụ,Hàng từ 7 trước và 8 trướcđược cho phép, mặc dù nó sẽ không bao giờ chọn bất kỳ hàng nào.

nếubộ lọcđược chỉ định, sau đó chỉ soi kèo bóng đá truoctran hàng đầu vào màFilter_ClauseĐánh giá thành true được đưa vào chức năng cửa sổ; soi kèo bóng đá truoctran hàng khác bị loại bỏ.Filtermệnh đề.

soi kèo bóng đá truoctran chức năng cửa sổ tích hợp được mô tả trongBảng 9,65. soi kèo bóng đá truoctran chức năng cửa sổ khác có thể được thêm bởi người dùng.

Cú pháp sử dụng*được sử dụng để gọi soi kèo bóng đá truoctran hàm tổng hợp không tham số như soi kèo bóng đá truoctran hàm cửa sổ, ví dụCount (*) Over (phân vùng theo thứ tự x theo thứ tự y). Dấu hoa thị (*5402_5140khác biệthoặcĐặt hàng bởiĐược sử dụng trong danh sách đối số chức năng.

soi kèo bóng đá truoctran cuộc gọi chức năng cửa sổ chỉ được phép trongChọnDanh sách vàĐặt hàng bởimệnh đề của truy vấn.

Thông tin thêm về soi kèo bóng đá truoctran chức năng cửa sổ có thể được tìm thấy trongPhần 3.5,Phần 9.22Phần 7.2.5.

4.2.9.Nhập soi kèo bóng đá truoctran diễn viên#

soi kèo bóng đá truoctran loại đúc chỉ định chuyển đổi từ loại dữ liệu này sang loại dữ liệu khác.POSTGRESQLChấp nhận hai cú pháp tương đương cho soi kèo bóng đá truoctran loại đúc:

cast (expressionASloại)expression::loại

TheCastCú pháp phù hợp với SQL; Cú pháp với::là lịch sửPostgreSQLsử dụng.

Khi một diễn viên được áp dụng cho một soi kèo bóng đá truoctran giá trị của một loại đã biết, nó thể hiện chuyển đổi loại thời gian chạy. Các diễn viên sẽ chỉ thành công nếu một hoạt động chuyển đổi loại phù hợp đã được xác định.Phần 4.1.2.7. soi kèo bóng đá truoctran diễn viên được áp dụng cho soi kèo bóng đá truoctran chuỗi không được trang trí theo nghĩa đen đại diện cho sự gán ban đầu của soi kèo bóng đá truoctran loại cho soi kèo bóng đá truoctran giá trị hằng số theo nghĩa đen, và do đó nó sẽ thành công cho bất kỳ loại nào (nếu nội dung của chuỗi theo nghĩa đen có thể chấp nhận được cú pháp đầu vào cho loại dữ liệu).

Một loại diễn viên rõ ràng thường có thể được bỏ qua nếu không có sự mơ hồ về loại soi kèo bóng đá truoctran giá trị phải tạo ra (ví dụ: khi nó được gán cho cột bảng); Hệ thống sẽ tự động áp dụng một loại đúc trong các trường hợp như vậy.OK để áp dụng ngầmTrong danh mục hệ thống. soi kèo bóng đá truoctran diễn viên khác phải được gọi bằng cú pháp đúc rõ ràng.

Cũng có thể chỉ định soi kèo bóng đá truoctran loại đúc bằng cách sử dụng cú pháp giống như hàm:

typename(soi kèo bóng đá truoctran)

Tuy nhiên, điều này chỉ hoạt động cho soi kèo bóng đá truoctran loại có tên cũng hợp lệ dưới dạng tên hàm. Ví dụ,Độ chính xác gấp đôiKhông thể được sử dụng theo cách này, nhưng tương đươngfloat8Có thể. Ngoài ra, tênKhoảng,thời gianTimestampChỉ có thể được sử dụng theo kiểu này nếu chúng được trích dẫn kép, vì xung đột cú pháp. Do đó, việc sử dụng cú pháp đúc giống như chức năng dẫn đến sự không nhất quán và có lẽ nên tránh.

Lưu ý

Cú pháp giống như hàm trên thực tế chỉ là soi kèo bóng đá truoctran cuộc gọi chức năng. Khi soi kèo bóng đá truoctran trong hai cú pháp đúc tiêu chuẩn được sử dụng để thực hiện chuyển đổi thời gian chạy, nó sẽ gọi nội bộ soi kèo bóng đá truoctran chức năng đã đăng ký để thực hiện chuyển đổi.MạnhCú pháp giống như chức năngKhông gì khác hơn là soi kèo bóng đá truoctran lời mời trực tiếp của chức năng chuyển đổi cơ bản. Rõ ràng, đây không phải là thứ mà soi kèo bóng đá truoctran ứng dụng di động nên dựa vào.Tạo Cast.

4.2.10.soi kèo bóng đá truoctran đối chiếu#

Theđối chiếumệnh đề ghi đè lên sự đối chiếu của một soi kèo bóng đá truoctran. Nó được gắn vào soi kèo bóng đá truoctran mà nó áp dụng cho:

exprđối chiếuđối chiếu

WHEREđối chiếulà soi kèo bóng đá truoctran định danh có thể sử dụng lược đồ. Theđối chiếumệnh đề liên kết chặt chẽ hơn soi kèo bóng đá truoctran toán tử; dấu ngoặc đơn có thể được sử dụng khi cần thiết.

Nếu không có đối chiếu được chỉ định rõ ràng, hệ thống cơ sở dữ liệu có nguồn gốc từ các cột liên quan đến soi kèo bóng đá truoctran hoặc mặc định là đối chiếu mặc định của cơ sở dữ liệu nếu không có cột nào liên quan đến soi kèo bóng đá truoctran.

Hai cách sử dụng phổ biến củađối chiếumệnh đề đang ghi đè theo thứ tự sắp xếp theoĐặt hàng bởimệnh đề, ví dụ:

Chọn a, b, c từ tbl trong đó ... thứ tự bằng soi kèo bóng đá truoctran đối chiếu "C";

và ghi đè lên sự đối chiếu của soi kèo bóng đá truoctran chức năng hoặc cuộc gọi toán tử có kết quả nhạy cảm địa phương, ví dụ:

Chọn * Từ TBL trong đó A 'Foo' đối chiếu "C";

Lưu ý rằng trong trường hợp sauđối chiếumệnh đề được gắn vào đối số đầu vào của toán tử mà chúng ta muốn ảnh hưởng. Không quan trọng đối số nào của toán tử hoặc chức năng gọiđối chiếumệnh đề được đính kèm, vì sự đối chiếu được áp dụng bởi toán tử hoặc chức năng được lấy bằng cách xem xét tất cả các đối số và soi kèo bóng đá truoctran điều rõ ràngđối chiếumệnh đề sẽ ghi đè lên soi kèo bóng đá truoctran đối chiếu của tất cả soi kèo bóng đá truoctran đối số khác. (Đính kèm không phù hợpđối chiếuTuy nhiên, điều khoản với nhiều đối số là soi kèo bóng đá truoctran lỗi. Để biết thêm chi tiết, xemPhần 23.2.) Vì vậy, điều này cho kết quả tương tự như ví dụ trước:

Chọn * Từ TBL trong đó soi kèo bóng đá truoctran đối chiếu "C" 'foo';

Nhưng đây là soi kèo bóng đá truoctran lỗi:

Chọn * từ TBL WHERE (a 'foo') đối chiếu "C";

Bởi vì nó cố gắng áp dụng soi kèo bóng đá truoctran đối chiếu vào kết quả củatoán tử, thuộc loại dữ liệu không thể thu đượcBoolean.

4.2.11.Qualeries vô hướng#

58854_58889ChọnTruy vấn trong ngoặc đơn trả về chính xác soi kèo bóng đá truoctran hàng với soi kèo bóng đá truoctran cột. (Nhìn thấyChương 7Để biết thông tin về soi kèo bóng đá truoctran truy vấn viết.)ChọnTruy vấn được thực thi và giá trị trả về đơn được sử dụng trong soi kèo bóng đá truoctran giá trị xung quanh. Đó là một lỗi khi sử dụng một truy vấn trả về nhiều hơn một hàng hoặc nhiều hơn một cột làm một trình duyệt con vô hướng.Phần 9.24Đối với các soi kèo bóng đá truoctran khác liên quan đến các mục tiêu phụ.

Ví dụ: sau đây tìm thấy dân số thành phố lớn nhất ở mỗi tiểu bang:

Chọn tên, (chọn tối đa (pop) từ soi kèo bóng đá truoctran thành phố nơi soi kèo bóng đá truoctran thành phố.state = states.name)

4.2.12.Chất xây dựng mảng#

Trình xây dựng mảng là một soi kèo bóng đá truoctran xây dựng giá trị mảng bằng cách sử dụng các giá trị cho các phần tử thành viên của nó. Một hàm tạo mảng đơn giản bao gồm từ khóamảng, khung vuông bên trái[, Danh sách các soi kèo bóng đá truoctran (được phân tách bằng dấu phẩy) cho các giá trị phần tử mảng và cuối cùng là một khung vuông bên phải]. Ví dụ:

chọn Mảng [1,2,3+4];

60957_64796499_6146hoặccaseCấu trúc (xemPhần 4.5). Bạn có thể ghi đè lên điều này bằng cách đúc soi kèo bóng đá truoctran cách rõ ràng Trình xây dựng mảng vào loại mong muốn, ví dụ:

chọn Mảng [1,2,22.7] :: Integer [];

Điều này có tác dụng tương tự như đúc từng soi kèo bóng đá truoctran cho loại phần tử mảng riêng lẻ. Để biết thêm về đúc, xemPhần 4.2.9.

Giá trị mảng đa chiều có thể được xây dựng bằng soi kèo bóng đá truoctran hàm tạo mảng làm tổ. Trong soi kèo bóng đá truoctran hàm tạo bên trong, từ khóamảngcó thể được bỏ qua. Ví dụ, những điều này tạo ra cùng soi kèo bóng đá truoctran kết quả:

chọn mảng [mảng [1,2], mảng [3,4]];

Vì soi kèo bóng đá truoctran mảng đa chiều phải là hình chữ nhật, soi kèo bóng đá truoctran hàm tạo bên trong ở cùng cấp độ phải tạo ra soi kèo bóng đá truoctran cấu trúc phụ có kích thước giống hệt nhau. Bất kỳ diễn viên nào được áp dụng cho bên ngoàimảngConstructor tuyên truyền tự động tới tất cả soi kèo bóng đá truoctran hàm tạo bên trong.

Các phần tử xây dựng mảng đa chiều có thể là bất cứ thứ gì mang lại soi kèo bóng đá truoctran mảng thuộc loại thích hợp, không chỉmảngXây dựng. Ví dụ:

Tạo bảng ARR (f1 int [], f2 int []);

Bạn có thể xây dựng soi kèo bóng đá truoctran mảng trống, nhưng vì không thể có soi kèo bóng đá truoctran mảng không có loại, bạn phải đúc rõ ràng mảng trống của mình vào loại mong muốn. Ví dụ:

chọn Array [] :: Integer [];

Cũng có thể xây dựng một mảng từ kết quả của một trình điều khiển con. Trong soi kèo bóng đá truoctran mẫu này, hàm tạo mảng được viết bằng từ khóamảngtheo sau là soi kèo bóng đá truoctran phần phụ (không được đặt dấu ngoặc). Ví dụ:

chọn mảng (chọn oid từ pg_proc trong đó đại từ như 'bytea%');

Trình điều khiển con phải trả về soi kèo bóng đá truoctran cột duy nhất. Nếu cột đầu ra của phụ thuộc loại không phải là soi kèo bóng đá truoctran loại không phải, thì mảng soi kèo bóng đá truoctran chiều kết quả sẽ có soi kèo bóng đá truoctran phần tử cho mỗi hàng trong kết quả truy vấn con, với soi kèo bóng đá truoctran loại phần tử phù hợp với cột đầu ra của SBURERY.

Các chỉ số của soi kèo bóng đá truoctran giá trị mảng được xây dựng vớimảngLuôn bắt đầu bằng soi kèo bóng đá truoctran. Để biết thêm thông tin về các mảng, xemPhần 8.1564707_6474

4.2.13.Chất xây dựng hàng#

Trình xây dựng hàng là một soi kèo bóng đá truoctran xây dựng giá trị hàng (còn được gọi là giá trị tổng hợp) bằng cách sử dụng các giá trị cho các trường thành viên của nó. Một hàm tạo hàng bao gồm từ khóahàng6544_65552

Chọn hàng (1,2,5, 'Đây là soi kèo bóng đá truoctran bài kiểm tra');

Từ khóahànglà tùy chọn khi có nhiều hơn một soi kèo bóng đá truoctran trong danh sách.

Trình xây dựng hàng có thể bao gồm cú phápROWVALUE.*, sẽ được mở rộng thành danh sách soi kèo bóng đá truoctran phần tử của giá trị hàng, giống như xảy ra khi.*Cú pháp được sử dụng ở cấp cao nhất củaChọnDanh sách (xemPhần 8.16.5). Ví dụ: nếu bảngTCó cộtF1F2, Những thứ này giống nhau:

Chọn hàng (t.*, 42) từ t;

Lưu ý

trướcPostgreSQL66598_6664.*Cú pháp không được mở rộng trong soi kèo bóng đá truoctran hàm tạo hàng, để viếthàng (t.*, 42)đã tạo soi kèo bóng đá truoctran hàng hai trường có trường đầu tiên là giá trị hàng khác. Hành vi mới thường hữu ích hơn..*, ví dụhàng (t, 42).

Theo mặc định, giá trị được tạo bởi Ahàngsoi kèo bóng đá truoctran thuộc loại bản ghi ẩn danh. Nếu cần thiết, nó có thể được đúc thành một loại tổng hợp được đặt tên - loại hàng của bảng hoặc loại tổng hợp được tạo bằngTạo loại dưới dạng. soi kèo bóng đá truoctran diễn viên rõ ràng có thể cần thiết để tránh sự mơ hồ.

Tạo bảng mytable (f1 int, f2 float, văn bản F3);

Các hàm tạo hàng có thể được sử dụng để xây dựng các giá trị tổng hợp để được lưu trữ trong cột bảng loại tổng hợp hoặc được truyền đến soi kèo bóng đá truoctran hàm chấp nhận tham số tổng hợp. Ngoài ra, có thể kiểm tra các hàng bằng cách sử dụng các toán tử so sánh tiêu chuẩn như được mô tả trongPhần 9.2, để so sánh soi kèo bóng đá truoctran hàng với soi kèo bóng đá truoctran hàng khác như được mô tả trongPhần 9.25và để sử dụng chúng liên quan đến soi kèo bóng đá truoctran nhóm con, như đã thảo luận trongPhần 9.24,

4.2.14.Quy tắc đánh giá soi kèo bóng đá truoctran69098_6941

Thứ tự đánh giá các soi kèo bóng đá truoctran hiện phụ không được xác định. Cụ thể, các đầu vào của toán tử hoặc chức năng không nhất thiết được đánh giá từ trái sang phải hoặc theo bất kỳ thứ tự cố định nào khác.

Hơn nữa, nếu kết quả của một soi kèo bóng đá truoctran có thể được xác định bằng cách chỉ đánh giá một số phần của nó, thì các biểu hiện phụ khác có thể không được đánh giá. Chẳng hạn, nếu một người đã viết:

Chọn True hoặc SomethingFunc ();

sau đóSOMEFUNC ()sẽ (có thể) không được gọi cả. Điều tương tự cũng sẽ xảy ra nếu soi kèo bóng đá truoctran người viết:

Chọn Somoundunc () hoặc true;

Lưu ý rằng điều này không giống như từ trái sang phảiSHITCUITINGcủa các toán tử Boolean được tìm thấy trong soi kèo bóng đá truoctran số ngôn ngữ lập trình.

Do đó, việc sử dụng các chức năng có tác dụng phụ là một phần của các soi kèo bóng đá truoctran phức tạp. Đặc biệt nguy hiểm khi dựa vào tác dụng phụ hoặc thứ tự đánh giá trongWHEREĐiều khoản, vì các điều khoản đó được xử lý rộng rãi như một phần của việc phát triển kế hoạch thực thi. soi kèo bóng đá truoctran Boolean (/hoặc/khôngKết hợp) Trong soi kèo bóng đá truoctran mệnh đề đó có thể được tổ chức lại theo bất kỳ cách nào được phép bởi soi kèo bóng đá truoctran luật của Đại số Boolean.

Khi nó cần thiết để buộc lệnh đánh giá, AcaseXây dựng (xemPhần 9,18) có thể được sử dụng. Ví dụ, đây là soi kèo bóng đá truoctran cách không đáng tin cậy để cố gắng tránh sự phân chia theo 0 trong soi kèo bóng đá truoctranWHEREmệnh đề:

7457_7144

Nhưng điều này là an toàn:

Chọn ... Trường hợp trường hợp khi x 0 thì y/x 1.5 khác kết thúc sai;

AcaseXây dựng được sử dụng theo kiểu này sẽ đánh bại soi kèo bóng đá truoctran nỗ lực tối ưu hóa, do đó chỉ nên thực hiện khi cần thiết. (Trong ví dụ cụ thể này, sẽ tốt hơn nếu vượt qua vấn đề bằng cách viếty 1.5*xthay vào đó.)

caseTuy nhiên, không phải là phương pháp chữa bệnh cho các vấn đề như vậy. Một hạn chế của kỹ thuật được minh họa ở trên là nó không ngăn chặn đánh giá sớm các soi kèo bóng đá truoctran hiện phụ liên tục.Phần 36.7, soi kèo bóng đá truoctran chức năng và toán tử được đánh dấuImmutablecó thể được đánh giá khi truy vấn được lên kế hoạch thay vì khi nó được thực thi. Do đó, ví dụ

Chọn trường hợp khi x 0 thì X khác 1/0 kết thúc từ tab;

72150_72303x 0sao chokhácARM sẽ không bao giờ được nhập vào thời gian chạy.

Trong khi ví dụ cụ thể đó có vẻ ngớ ngẩn, soi kèo bóng đá truoctran trường hợp liên quan rõ ràng không liên quan đến soi kèo bóng đá truoctran hằng số có thể xảy ra trong soi kèo bóng đá truoctran truy vấn được thực thi trong soi kèo bóng đá truoctran hàm, vì soi kèo bóng đá truoctran giá trị của soi kèo bóng đá truoctran đối số chức năng và soi kèo bóng đá truoctran biến cục bộ có thể được chèn vào soi kèo bóng đá truoctran truy vấn làm hằng số cho mục đích lập kế hoạch. Ở trongPL/PGSQLChức năng, ví dụ, sử dụngnếu-sau đó-khácTuyên bố để bảo vệ tính toán rủi ro an toàn hơn nhiều so với chỉ làm tổ trong soi kèo bóng đá truoctrancasesoi kèo bóng đá truoctran.

soi kèo bóng đá truoctran giới hạn khác của cùng loại là A73097_7343Không thể ngăn chặn đánh giá soi kèo bóng đá truoctran tổng hợp có trong đó, vì các soi kèo bóng đá truoctran tổng hợp được tính toán trước các soi kèo bóng đá truoctran khác trong AChọnDanh sách hoặcmệnh đề được xem xét. Ví dụ: truy vấn sau đây có thể gây ra lỗi phân chia từng không mặc dù dường như đã được bảo vệ chống lại nó:

Chọn trường hợp khi tối thiểu (nhân viên) 0

Themin ()avg ()Tập hợp được tính đồng thời trên tất cả soi kèo bóng đá truoctran hàng đầu vào, vì vậy nếu bất kỳ hàng nào cónhân viênBằng không, lỗi phân chia từng không sẽ xảy ra trước khi có bất kỳ cơ hội nào để kiểm tra kết quả củamin (). Thay vào đó, hãy sử dụngWHEREhoặcbộ lọcmệnh đề để ngăn soi kèo bóng đá truoctran hàng đầu vào có vấn đề tiếp cận hàm tổng hợp ở vị trí đầu tiên.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợpMẫu nàyĐể báo cáo vấn đề tài liệu.