Trong Oracle, POWER()
hàm trả về đối số đầu tiên của nó được nâng lên thành lũy thừa của đối số thứ hai.
Cú pháp
Cú pháp như sau:
POWER(n2, n1)
Mỗi đối số có thể là bất kỳ kiểu dữ liệu số nào hoặc bất kỳ kiểu dữ liệu phi số nào có thể được chuyển đổi hoàn toàn thành kiểu dữ liệu số.
Tuy nhiên, cả hai đối số có thể là bất kỳ số nào, nếu n2
là âm, sau đó là n1
phải là một số nguyên.
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT POWER(8, 2)
FROM DUAL;
Kết quả:
POWER(8,2) _____________ 64
Và ở đây nó đang sử dụng một phần phân số trong đối số thứ hai:
SELECT POWER(8, 2.5)
FROM DUAL;
Kết quả:
POWER(8,2.5) __________________________________________ 181.01933598375616624661615669884135406
Tuy nhiên, chỉ có thể sử dụng phần phân số khi đối số đầu tiên là số dương.
Giá trị phủ định
Như đã đề cập, nếu đối số đầu tiên là số âm, thì đối số thứ hai phải là một số nguyên:
SELECT POWER(-8, 2)
FROM DUAL;
Kết quả:
POWER(-8,2) ______________ 64
Đây là những gì sẽ xảy ra khi số thứ hai không phải là số nguyên:
SELECT POWER(-8, 2.5)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT POWER(-8, 2.5) FROM DUAL Error report - ORA-01428: argument '-8' is out of range
Đối số không phải dạng số
Các đối số có thể là bất kỳ kiểu dữ liệu số nào hoặc bất kỳ kiểu dữ liệu phi số nào có thể được chuyển đổi hoàn toàn thành kiểu dữ liệu số.
Dưới đây là một ví dụ về điều gì sẽ xảy ra khi các đối số không đáp ứng tiêu chí đó:
SELECT POWER('Gosh', 'Dang')
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT POWER('Gosh', 'Dang') FROM DUAL Error report - ORA-01722: invalid number
Đối số rỗng
POWER()
trả về null
nếu bất kỳ đối số nào là null
:
SET NULL 'null';
SELECT
POWER(null, 3),
POWER(8, null),
POWER(null, null)
FROM DUAL;
Kết quả:
POWER(NULL,3) POWER(8,NULL) POWER(NULL,NULL) ________________ ________________ ___________________ null null null
Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào giá trị null xảy ra do một SELECT
trong SQL tuyên bố.
Tuy nhiên, bạn có thể sử dụng SET NULL
để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null
nên được trả lại.
Thiếu đối số
Đang gọi POWER()
mà không có bất kỳ đối số nào dẫn đến lỗi:
SELECT POWER()
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT POWER() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Và điều tương tự cũng áp dụng khi gọi nó với quá nhiều đối số:
SELECT POWER(10, 2, 3)
FROM DUAL;
Kết quả:
Error starting at line : 1 in command - SELECT POWER(10, 2, 3) FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: