Oracle, các tác vụ SQL điển hình. Sự lựa chọn được đảm bảo

chức năng NVL

Chức năng NVL thường được sử dụng thường xuyên nhất. Hàm nhận hai tham số: NVL(expr1, expr2). Nếu tham số đầu tiên expr1 không phải là NULL thì hàm sẽ trả về giá trị của nó. Nếu tham số đầu tiên là NULL thì hàm sẽ trả về giá trị của tham số thứ hai là expr2.

Hãy xem xét ví dụ thực tế. Trường COMM trong bảng EMP có thể chứa các giá trị NULL. Khi thực hiện một truy vấn như:

CHỌN EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM

TỪ SCOTT.EMP

giá trị NULL sẽ được thay thế bằng 0. Lưu ý rằng khi một giá trị được tạo bằng hàm, nó sẽ được gán một bí danh. Kết quả truy vấn sẽ như sau:

EMPNO ENAME COMM NVL_COMM
7369 THỢ RÈN 0
7499 ALLEN 300 300
7521 PHƯỜNG 500 500
7566 JONES 0
7654 MARTIN 1400 1400
7698 màu đen 0
7782 CLARK 0
7839 NHÀ VUA 0
7844 máy tiện 0 0
7900 JAMES 0
7902 FORD 0
7934 máy xay 0

Hàm CEIL(n)

Hàm CEIL trả về số nguyên nhỏ nhất lớn hơn hoặc bằng số n được truyền dưới dạng tham số. Ví dụ:

CHỌN CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4

TỪ KÉP

Hàm TRUNC(n [,m])

Hàm TRUNC trả về số n được cắt ngắn đến m chữ số thập phân. Tham số m có thể không được chỉ định; trong trường hợp này, n bị cắt cụt thành số nguyên.

CHỌN TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

TỪ KÉP

Chức năng SIGN(n)

Hàm SIGN xác định dấu của một số. Nếu n dương thì hàm trả về 1. Nếu n âm, hàm trả về -1. Nếu bằng 0 thì trả về 0 Ví dụ:

CHỌN ĐĂNG KÝ(100.22) X1, ĐĂNG KÝ(-100.22) X2, ĐĂNG KÝ(0) X3

TỪ KÉP

Một tính năng thú vị của chức năng này là khả năng truyền m bằng 0 mà không gây ra lỗi chia cho 0.

Chức năng POWER(n, m)

Hàm POWER tăng số n lên lũy thừa m. Mức độ có thể là phân số và âm, giúp mở rộng đáng kể khả năng của chức năng này.

CHỌN CÔNG SUẤT(10, 2) X1, CÔNG SUẤT(100, 1/2) X2,

CÔNG SUẤT(1000, 1/3) X3, CÔNG SUẤT(1000, -1/3) X4

TỪ KÉP

X1 X2 X3 X4
100 10 10 0,1

Trong một số trường hợp, việc gọi hàm này có thể gây ra tình huống đặc biệt. Ví dụ:

CHỌN ĐIỆN (-100, 1/2) X2

TỪ KÉP

TRONG trong trường hợp này một nỗ lực được thực hiện để tính căn bậc hai của số âm, điều này sẽ tạo ra lỗi ORA-01428 "Đối số nằm ngoài phạm vi".

Hàm SQRT(n)

Chức năng này trả lại Căn bậc hai từ số n. Ví dụ:

CHỌN SQRT(100) X

TỪ KÉP

Hàm EXP(n) và LN(n)

Hàm EXP nâng e lên lũy thừa n và hàm LN tính logarit tự nhiên của n (n phải lớn hơn 0). Ví dụ:

CHỌN EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

Khi soạn các truy vấn SQL, một tình huống thường phát sinh khi chọn dữ liệu, bạn cần so sánh giá trị của một số cột và xuất ra cột chứa dữ liệu (không trống). Biểu thức Coalesce giải quyết vấn đề này một cách hoàn hảo. Trong bài viết này bạn sẽ tìm thấy mô tả đầy đủ Kết hợp các biểu thức sql, mô tả các tính năng sử dụng cũng như các ví dụ.

In các giá trị không null bằng Coalesce. Đặc thù

Hãy xem các tính năng của việc sử dụng Sql Coalesce:

  1. Cho phép chỉ định số lượng đối số bất kỳ (không giống như Isnull/Nvl/Nvl2, số lượng đối số bị giới hạn).
  2. Có thể chấp nhận các truy vấn phụ làm đối số.
  3. Trả về kết quả bằng Đầu tiên một giá trị khác Null hoặc Null nếu không tìm thấy giá trị nào ngoài Null.
  4. Sql Coalesce có thể được sử dụng trong mệnh đề Select để chọn một giá trị không trống và cũng trong Where để chỉ định rằng một tập hợp các cột có giá trị trống không được phép (/ được phép).
  5. Biểu thức này tương đương với việc sử dụng biểu thức Case, biểu thức này sẽ kiểm tra tuần tự từng đối số để tìm điều kiện Khi đối số1 là có giá trị thì đối số1. Về cơ bản, Coalesce là một “phím tắt” được tạo để dễ sử dụng và trong nhiều DBMS, trình tối ưu hóa truy vấn sẽ viết lại biểu thức Coalesce thành Case.
  6. Các hàm Sql Coalesce có sẵn trong tất cả các ngôn ngữ quan hệ hàng đầu

Cú pháp kết hợp

Ai đã từng sử dụng Coalesce khi viết truy vấn sql đều biết cú pháp biểu thức đã cho cực kỳ đơn giản. Đủ rồi dấu ngoặc đơn chỉ ra các đối số được kiểm tra cho Null, được phân tách bằng dấu phẩy. Nếu chúng ta giả sử rằng các đối số được đặt tên là arg1, arg2, ... argN, thì cú pháp Coalesce sẽ như sau:

Hợp nhất(arg1, arg2, … argN).

Hãy chuẩn bị một số bảng để nghiên cứu cơ chế hoạt động của biểu thức này.

Chuẩn bị bàn

Để hiểu rõ hơn về sự kết hợp mô tả sql, hãy tạo hai bảng trong cơ sở dữ liệu chứa thông tin về các đối tượng bất động sản.

Đặt bảng đầu tiên Diện tích chứa tên của các đối tượng bất động sản và diện tích của chúng. Khu vực có thể được chỉ định (area_yt) hoặc được khai báo (area_decl).

nhận dạng

tên của môn học

khu vực_yt

diện tích_decl

Đối tượng thi công dở dang 1

Phòng 1

Phòng 2

Lô đất 1

Tòa nhà 1

Phòng 3

Tòa nhà 2

Đặt bảng thứ hai Basic_characteristic chứa thông tin về các đặc điểm chính của đối tượng bất động sản - chiều dài (Extension), chiều sâu (Depth), diện tích (Area), thể tích (Scope), chiều cao (Height).

nhận dạng

tên của môn học

Sự mở rộng

Chiều sâu

Khu vực

Phạm vi

Chiều cao

Tòa nhà 1

Lô đất 1

Phòng 1

Phòng 2

Phòng 3

Chúng ta đã xem xét cú pháp, mô tả, tính năng sử dụng của Coalesce sql và chuyển trực tiếp sang các ví dụ.

Ví dụ về việc sử dụng

Cú pháp của biểu thức Coalesce cực kỳ đơn giản, nhưng điều quan trọng cần nhớ là kết quả của việc thực thi lệnh sẽ là giá trị không trống ĐẦU TIÊN được tìm thấy từ danh sách đối số. Nhận xét này rất tầm quan trọng lớn, do đó các đối số trong biểu thức phải được sắp xếp theo thứ tự quan trọng. Cách dễ nhất để hiểu nguyên tắc này là từ bảng diện tích. Soạn một truy vấn chọn tên của thuộc tính, cũng như giá trị diện tích:

CHỌN Area.id, Area.object_name, kết hợp (Area.area_yt, Area.area_decl)

Và nhận được kết quả:

Đối với các đối tượng “Tòa nhà 1”, “Đất 1” và “Cấu trúc 2”, cả hai giá trị diện tích đều được điền vào, nhưng khu vực được chỉ định sẽ được ưu tiên vì chúng tôi đã chỉ ra nó đầu tiên trong danh sách đối số. Biểu thức Coalesce đã tìm thấy giá trị không trống đầu tiên và in nó, dừng các đối số tiếp theo. Công trình này yêu cầu - đúng, vì khu vực được chỉ định cụ thể hơn khu vực được khai báo. Nếu chúng ta đã chỉ định vùng được khai báo làm đối số đầu tiên thì khi trường bảng này được điền, nó sẽ được ưu tiên.

Ngoài việc được sử dụng trong Chọn, việc sử dụng biểu thức Coalesce với điều kiện Where là rất phổ biến. Nó cho phép bạn loại bỏ khỏi kết quả những hàng trong đó các giá trị của danh sách các trường trống (hoặc ngược lại, chỉ đưa vào kết quả những giá trị mà danh sách các trường không được điền). Tình trạng này xảy ra khắp mọi nơi: ví dụ tại doanh nghiệp, khi đăng ký một nhân viên mới, chỉ những thông tin cơ bản về người đó mới được nhập vào cơ sở dữ liệu và điền vào. thông tin chi tiếtđể lại sau. Dần dần, các “khoảng trống” xuất hiện - trước khi thanh tra hoặc khi nhân viên được cử đi nghỉ/đi công tác/nghỉ ốm.

Hãy chọn từ bảng với các đặc điểm chính của các đối tượng bất động sản mà không có giá trị đặc trưng nào được điền vào:

Chúng tôi hy vọng rằng mô tả chi tiết của chúng tôi về Coalesce sql đã giúp bạn hiểu tất cả các tính năng của việc sử dụng biểu thức này, cũng như hiểu được các sắc thái quan trọng.

Chúng ta đã đề cập đến các hàm lồng nhau sớm hơn một chút, bây giờ chúng ta sẽ xem xét chúng chi tiết hơn một chút. Chúng ta cũng sẽ xem xét các hàm để làm việc với giá trị NULL và các hàm giúp triển khai thao tác phân nhánh trong truy vấn.

Các hàm lồng nhau

Các hàm lồng nhau sử dụng giá trị trả về của một hàm làm tham số đầu vào cho hàm khác. Hàm luôn chỉ trả về một giá trị. Do đó, bạn có thể coi kết quả của lệnh gọi hàm là giá trị cố định khi bạn sử dụng nó làm tham số cho lệnh gọi hàm khác. Hàm chuỗi có thể được lồng vào bất kỳ cấp độ lồng nhau nào. Một cuộc gọi hàm trông như thế này

Hàm1(tham số1, tham số2, …) = kết quả

Việc thay thế một tham số hàm bằng lệnh gọi hàm khác có thể dẫn đến các biểu thức như

F1(param1.1, F2(param2.1, param2.2, F3(param3.1)), param1.3)

Các hàm lồng nhau được đánh giá trước khi kết quả của chúng được sử dụng làm giá trị đầu vào cho các hàm khác. Các hàm được đánh giá từ mức lồng sâu nhất đến mức cao nhất từ ​​trái sang phải. Biểu thức trước đó được thực thi như sau

  1. Hàm F3(param1) được ước tính và giá trị trả về được sử dụng làm tham số thứ ba cho hàm 2, hãy gọi nó là param2.3
  2. Sau đó, hàm F2(param1, param2.2, param2.3) được ước tính và giá trị trả về được dùng làm tham số thứ hai của hàm F1 - param1.2
  3. Cuối cùng, hàm F1(param1, param2, param1.3) được đánh giá và kết quả được trả về chương trình gọi.

Do đó, hàm F3 ở cấp độ lồng thứ ba.

Hãy xem xét yêu cầu

chọn next_day(last_day(sysdate)-7, ‘tue’) từ kép;

  1. Có ba chức năng trong yêu cầu này, từ mức độ thấp hơn lên đầu – SYSDATE, LAST_DAY, NEXT_DAY. Yêu cầu được thực hiện như sau
  2. Hàm SYSDATE lồng nhau được thực thi. Nó trả về hiện tại thời gian hệ thống. Giả sử ngày hiện tại là ngày 28 tháng 10 năm 2009
  3. Tiếp theo, kết quả của hàm cấp hai LAST_DAY được tính toán. LAST_DATE('28-OCT-2009') trả về ngày cuối cùng của tháng 10 năm 2009, tức là ngày 31 tháng 10 năm 2009.
  4. Sau đó, bảy ngày được trừ đi kể từ ngày này - hóa ra là ngày 24 tháng 10.
  5. Cuối cùng, hàm NEXT_DAY('24-OCT-2009', 'tue') được đánh giá và truy vấn trả về thứ Ba cuối cùng của tháng 10 - trong ví dụ của chúng tôi là 27-OCT-2009.

Khá khó để hiểu và xây dựng các biểu thức phức tạp bằng cách sử dụng nhiều lệnh gọi hàm lồng nhau, nhưng điều này cần có thời gian và thực hành. Bạn có thể chia các biểu thức đó thành nhiều phần và kiểm tra chúng một cách riêng biệt. Bảng DUAL rất hữu ích cho việc kiểm tra các truy vấn và kết quả lệnh gọi hàm. Bạn có thể kiểm tra và gỡ lỗi các thành phần nhỏ, sau đó kết hợp thành một biểu thức lớn mong muốn.

Hàm phân nhánh

Các hàm nhánh, còn được gọi là IF-THEN-ELSE, được sử dụng để xác định đường dẫn thực thi tùy thuộc vào một số trường hợp. Các hàm phân nhánh trả về các kết quả khác nhau dựa trên kết quả đánh giá điều kiện. Nhóm các hàm như vậy bao gồm các hàm làm việc với giá trị NULL: NVL, NVL2, NULLIF và COALESCE. Và cũng chức năng chung, được biểu thị bằng hàm DECODE và biểu thức CASE. Chức năng DECODE là hàm Oracle, trong khi biểu thức CASE có trong tiêu chuẩn ANSI SQL.

chức năng NVL

Hàm NVL kiểm tra giá trị của một cột hoặc biểu thức của bất kỳ loại dữ liệu nào để tìm giá trị NULL. Nếu giá trị là NULL thì nó trả về một giá trị mặc định không phải NULL thay thế, nếu không thì nó trả về giá trị ban đầu.

Hàm NVL có hai tham số bắt buộc và cú pháp là NVL(origin, ifnull) trong đó original là giá trị ban đầu cần kiểm tra và ifnull là kết quả được hàm trả về nếu giá trị ban đầu là NULL. Kiểu dữ liệu của tham số ifnull và tham số gốc phải tương thích. Nghĩa là, kiểu dữ liệu phải giống nhau hoặc phải có khả năng chuyển đổi ngầm các giá trị từ kiểu này sang kiểu khác. Hàm NVL trả về giá trị có cùng kiểu dữ liệu với kiểu dữ liệu của tham số ban đầu. Hãy xem xét ba truy vấn

Truy vấn 1: chọn nvl(1234) từ kép;

Truy vấn 2: chọn nvl(null, 1234) từ kép;

Truy vấn 3: select nvl(substr('abc', 4), 'Không tồn tại chuỗi con') từ kép;

Vì hàm NVL yêu cầu hai tham số nên yêu cầu 1 sẽ trả về lỗi ORA-00909: số lượng đối số không hợp lệ. Truy vấn 2 sẽ trả về 1234 vì giá trị NULL được chọn và nó là NULL. Truy vấn thứ ba sử dụng hàm SUBSTR lồng nhau để cố gắng trích xuất ký tự thứ tư từ một chuỗi dài ba ký tự, trả về NULL và hàm NVL trả về chuỗi 'Không tồn tại chuỗi sbustring'.

Hàm NVL rất hữu ích khi làm việc với các con số. Nó được sử dụng để chuyển đổi giá trị NULL thành 0 sao cho các phép tính toán học NULL không được trả về qua số

chức năng NVL2

Hàm NVL2 cung cấp nhiều chức năng hơn NVL nhưng cũng dùng để xử lý các giá trị NULL. Nó kiểm tra giá trị của một cột hoặc biểu thức thuộc bất kỳ loại nào đối với NULL. Nếu giá trị không phải là NULL thì tham số thứ hai sẽ được trả về, nếu không thì tham số thứ ba sẽ được trả về, không giống như hàm NVL, trong trường hợp này trả về giá trị ban đầu.

Hàm NVL2 có ba tham số bắt buộc và cú pháp là NVL2(origin, ifnotnull, ifnull), trong đó gốc là giá trị đang được kiểm tra, ifnotnull là giá trị được trả về nếu gốc không phải là NULL và ifnull là giá trị được trả về nếu gốc là NULL. Các kiểu dữ liệu của tham số ifnotnull và ifnull phải tương thích và chúng không thể loại DÀI. Kiểu dữ liệu được hàm NVL2 trả về bằng kiểu dữ liệu của tham số ifnotnull. Hãy xem xét một vài ví dụ

Truy vấn 1: chọn nvl2(1234, 1, ‘a string’) từ kép;

Truy vấn 2: chọn nvl2(null, 1234, 5678) từ kép;

Truy vấn 3: select nvl2(substr('abc', 2), 'Not bc', 'No substring') from double;

Tham số ifnotnull trong yêu cầu 1 là một số và tham số ifnull là một chuỗi. Do các kiểu dữ liệu không tương thích nên lỗi “ORA-01722: số không hợp lệ” sẽ được trả về. Truy vấn thứ hai trả về tham số ifnull, vì giá trị ban đầu là NULL và kết quả sẽ là 5678. Truy vấn thứ ba sử dụng hàm SUBSTR trả về 'bc' và gọi NVL2('bc','Not bc','No substring') - trả về tham số ifnotnull – 'Không phải bc'.

Hàm NULLIF

Hàm NULLIF kiểm tra xem hai giá trị có giống nhau hay không. Nếu chúng giống nhau thì trả về NULL, nếu không thì trả về tham số đầu tiên. Hàm NULLIF có hai tham số bắt buộc và cú pháp là NULLIF(ifunequal, so sánh_item). Hàm so sánh hai tham số và nếu chúng giống hệt nhau thì trả về NULL, nếu không thì tham số đó là ifunequal. Hãy xem xét các yêu cầu

Truy vấn 1: chọn nullif(1234, 1234) từ kép;

Truy vấn một trả về NULL vì các tham số giống hệt nhau. Các chuỗi trong Truy vấn 2 không được chuyển đổi thành ngày mà được so sánh dưới dạng chuỗi. Vì các chuỗi có độ dài khác nhau nên tham số ifunequal được trả về vào ngày 24 tháng 7 năm 2009.

Trong Hình 10-4, hàm NULLIF được lồng trong hàm NVL2. Hàm NULLIF lần lượt sử dụng các hàm SUBSTR và UPPER như một phần của biểu thức trong tham số ifunequal. Cột EMAIL được so sánh với biểu thức này, cột này trả về chữ cái đầu tiên của tên kết hợp với họ của những nhân viên có tên dài 4 ký tự. Khi các giá trị này bằng nhau thì NULLIF sẽ trả về NULL, ngược lại sẽ trả về giá trị của tham số ifunequal. Các giá trị này được sử dụng làm tham số cho hàm NVL2. NVL2 lần lượt trả về mô tả xem các phần tử được so sánh có khớp hay không.

Hình 10-4 – Sử dụng hàm NULLIF

hàm HỢP NHẤT

Hàm COALESCE trả về giá trị không NULL đầu tiên từ danh sách tham số. Nếu tất cả tham số là NULL thì trả về NULL. Hàm COALESCE có hai tham số bắt buộc và số lượng tham số tùy chọn bất kỳ và cú pháp là COALESCE(expr1, expr2, ..., exprn) trong đó kết quả sẽ là expr1 nếu giá trị của expr 1 không phải là NULL, nếu không thì kết quả sẽ là expr2 nếu nó không phải là NULL, v.v. COALESCE có ý nghĩa tương đương với các hàm NVL lồng nhau

COALESCE(expr1, expr2) = NVL(expr1, expr2)

COALESCE(expr1, expr2, expr3) = NVL(expr1,NVL(expr2, expr3))

Kiểu dữ liệu của giá trị được trả về nếu tìm thấy giá trị không phải NULL bằng kiểu dữ liệu của giá trị không phải NULL đầu tiên. Để tránh lỗi “ORA-00932: các kiểu dữ liệu không nhất quán”, tất cả các tham số không phải NULL phải tương thích với tham số không phải NULL đầu tiên. Hãy xem ba ví dụ

Truy vấn 1: chọn kết hợp(null, null, null, 'a string') từ kép;

Truy vấn 2: chọn kết hợp (null, null, null) từ kép;

Truy vấn 3: chọn kết hợp (substr('abc', 4), 'Không phải bc', 'Không có chuỗi con') từ kép;

Truy vấn 1 trả về tham số thứ tư: một chuỗi, vì đây là tham số không NULL đầu tiên. Truy vấn hai trả về NULL vì tất cả tham số đều là NULL. Truy vấn 3 đánh giá tham số đầu tiên, nhận giá trị NULL và trả về tham số thứ hai vì đây là tham số không phải NULL đầu tiên.

Các tham số của hàm NVL2 có thể gây nhầm lẫn nếu bạn đã quen với hàm NVL. NVL(origin, ifnull) trả về giá trị gốc nếu giá trị không phải là NULL, nếu không thì là ifnull. NVL2(bản gốc, ifnotnull, ifnull) trả về ifnotnull nếu bản gốc không phải là NULL nếu không thì là ifnull. Sự nhầm lẫn xuất phát từ thực tế là tham số thứ hai của hàm NVL là ifnull, trong khi đối với NVL2 thì đó là ifnotnull. Vì vậy, đừng dựa vào vị trí của tham số trong hàm.

chức năng giải mã

Hàm DECODE triển khai logic if-then-else bằng cách kiểm tra sự bằng nhau của hai tham số đầu tiên và trả về giá trị thứ ba nếu chúng bằng nhau hoặc trả về một giá trị khác nếu chúng không bằng nhau. Hàm DECODE có ba tham số bắt buộc và cú pháp là DECODE(expr1, comp1, iftrue1, , ). Các tham số này được sử dụng như trong ví dụ mã giả sau

IF expr1=comp1 thì trả về iftrue1

Ngược lại nếu expr1=comp2 thì trả về iftrue2

Ngược lại nếu exprN=compN thì trả về iftrueN

Ngược lại trả về NULL|iffalse;

Đầu tiên, expr1 được so sánh với comp1. Nếu chúng bằng nhau, iftrue1 được trả về. Nếu expr1 không bằng comp1 thì điều gì xảy ra tiếp theo sẽ phụ thuộc vào việc các tham số comp2 và iftrue2 có được chỉ định hay không. Nếu được cung cấp, giá trị của expr1 sẽ được so sánh với comp2. Nếu các giá trị bằng nhau thì iftrue2 được trả về. Nếu không, thì nếu có các cặp tham số compN, iftrueN, expr1 và compN sẽ được so sánh và nếu bằng nhau, iftrueN sẽ được trả về. Nếu không tìm thấy kết quả trùng khớp trong bất kỳ tập hợp tham số nào thì sẽ trả về iffalse nếu tham số này được chỉ định hoặc trả về NULL.

Tất cả các tham số trong hàm DECODE đều có thể là biểu thức. Loại giá trị trả về bằng loại của phần tử xác thực đầu tiên - tham số comp 1. Biểu thức expr 1 được ngầm chuyển thành kiểu dữ liệu của tham số comp1. Tất cả các thông số comp có sẵn khác 1...comN cũng được ngầm chuyển thành kiểu comp 1. DECODE coi giá trị NULL bằng với giá trị NULL khác, tức là. nếu expr1 là NULL và comp3 là NULL và comp2 không phải là NULL thì iftrue3 sẽ được trả về. Hãy xem xét một vài ví dụ

Truy vấn 1: chọn giải mã(1234, 123, ‘123 trùng khớp’) từ kép;

Truy vấn 2: chọn giải mã(1234, 123, ‘123 trùng khớp’, ‘Không trùng khớp’) từ kép;

Truy vấn 3: chọn giải mã('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' sai') từ kép;

Truy vấn một so sánh giá trị 1234 và 123. Vì chúng không bằng nhau nên iftrue1 bị bỏ qua và vì giá trị iffalse không được xác định nên trả về NULL. Yêu cầu hai giống hệt với yêu cầu 1 ngoại trừ giá trị iffalse được xác định. Vì 1234 không bằng 123 nên nó trả về iffalse – ‘Không khớp’. Truy vấn thứ ba kiểm tra các giá trị tham số có khớp với giá trị tìm kiếm hay không. Các tham số comp1 và comp2 không bằng 'search' nên kết quả của iftrue1 và iftrue2 bị bỏ qua. Tìm thấy kết quả khớp trong thao tác so sánh thứ ba của phần tử comp3 (vị trí tham số 6) và giá trị của iftrue3 (tham số 7) được trả về bằng 'true3'. Vì tìm thấy kết quả trùng khớp nên không thực hiện thêm phép tính nào nữa. Nghĩa là, mặc dù thực tế là giá trị của comp4 (tham số 8) cũng khớp với expr1, biểu thức này không bao giờ được tính toán vì kết quả khớp được tìm thấy trong phép so sánh trước đó.

biểu thức CASE

Tất cả các ngôn ngữ lập trình của bên thứ ba và bên thứ ba thế hệ thứ tư triển khai xây dựng trường hợp. Giống như hàm DECODE, biểu thức CASE cho phép bạn triển khai logic if-then-else. Có hai tùy chọn để sử dụng biểu thức CASE. Một bộ biểu thức CASE đơn giản phần tử nguồn so sánh một lần rồi liệt kê mọi thứ những điều kiện cần thiết Séc. CASE phức tạp (được tìm kiếm) đánh giá cả hai câu lệnh cho từng điều kiện.

Biểu thức CASE có ba tham số bắt buộc. Cú pháp biểu thức phụ thuộc vào loại. Đối với một biểu thức CASE đơn giản, nó trông như thế này

CASE search_expr

KHI so sánh_expr1 THÌ iftrue1

}