Oracle DBMS 中的函式
Oracle 中的不同型別的函式如下:
- Oracle 字串函式
- Oracle 數值函式
- Oracle 日期函式
有關這些函式的更多詳細資訊如下所述:
Oracle 字串函式
以下是 Oracle 字串函式:
ASCII(str)
此函式返回提供的字串 str 中第一個單詞的 ASCII 或數值。如果它是空字串,則返回 0。例如
SQL> SELECT ASCII('Apple'); +---------------------------------------------------------+ | ASCII('Apple') | +---------------------------------------------------------+ | 65 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
這將返回 A 的 ASCII 值,即 65,因為它是字串中的第一個字元。
CONCAT(str1,str2…..strn)
此函式返回透過連線引數列表中的所有字串而形成的字串。這些字串可能只有兩個或多個,但它們都將被連線。例如
SQL> SELECT CONCAT('Sky', 'Is', 'Beautiful'); +---------------------------------------------------------+ | CONCAT('Sky', 'Is', 'Beautiful') | +---------------------------------------------------------+ |SkyIsBeautiful | +---------------------------------------------------------+ 1 row in set (0.00 sec)
三個字串“Sky”、“Is”、“Beautiful”連線成一個字串,即“SkyIsBeautiful”。
LENGTH(str)
此函式返回字串 str 的長度(以位元組為單位)。例如
SQL> SELECT LENGTH('happy'); +---------------------------------------------------------+ | LENGTH('happy') | +---------------------------------------------------------+ | 5 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
字串“happy”的長度以位元組為單位返回,即 5。
LOWER(str)
此函式將所有大寫字元轉換為小寫。例如
SQL> SELECT LOWER('BEAUTY'); +---------------------------------------------------------+ | LOWER('BEAUTY') | +---------------------------------------------------------+ | beauty | +---------------------------------------------------------+ 1 row in set (0.00 sec)
“BEAUTY”的所有字元都轉換為小寫,即“beauty”。
STRCMP(str1,str2)
此函式比較兩個字串 str1 和 str2。如果兩個字串相等,則返回 0;如果 str1 大於 str2,則返回 1;如果 str2 大於 str1,則返回 -1。例如:
SQL> SELECT STRCMP('MIKE', 'MIKE'); +---------------------------------------------------------+ | STRCMP('MIKE', 'MIKE') | +---------------------------------------------------------+ | 0 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
該函式返回 0,因為字串“MIKE”和“MIKE”相同。
UPPER(str)
此函式將所有小寫字元轉換為大寫。例如:
SQL> SELECT UPPER('orange'); +---------------------------------------------------------+ | UPPER('orange') | +---------------------------------------------------------+ | ORANGE | +---------------------------------------------------------+ 1 row in set (0.00 sec)
字串“orange”轉換為大寫“ORANGE”。
Oracle 數值函式
以下是 Oracle 數值函式
ABS(X)
此函式返回 X 的絕對值。例如
SELECT ABS(-10);
這將返回 10。
MOD(X,Y)
變數 X 除以 Y,並返回餘數。例如
SELECT MOD(15,2);
這將返回 1。
SIGN(X)
如果 X 為正,則返回 1;如果為負,則返回 -1;如果 X 的值為 0,則返回 0。例如
SELECT SIGN(-20);
這將返回 -1。
FLOOR(X)
這將返回小於或等於 X 的最大整數值。例如
SELECT FLOOR(8.3);
這將返回 8。
CEIL(X)
這將返回大於或等於 X 的最小整數值。例如:
SELECT CEIL(8.3);
這將返回 9。
POWER(X,Y)
此函式返回 X 的 Y 次冪的值。例如
SELECT POWER(3,2);
這將返回 9。
Oracle 日期函式
以下是 Oracle 字串函式
SYSDATE()
此函式返回系統的當前日期和時間。它是最受歡迎的 Oracle 函式之一。SYSDATE() 通常與 TO_CHAR() 函式一起使用。例如
TO_CHAR(SYSDATE, ‘MM-DD-YYYY HH:MM:SS’);
這將以字串的形式返回系統日期和時間。在這種情況下,它將為“08-01-2018 12:28:34”。
MONTHS_BETWEEN(x,y)
此函式採用兩個值,即 x 和 y,它們以月份的形式表示。它返回 x 和 y 之間的月數。
例如:可以使用 MONTHS_BETWEEN() 以及 SYSDATE 和員工入職日期作為引數來查詢員工在公司工作的月數。
SELECT MONTHS_BETWEEN (SYSDATE, EMP_JOIN_DATE) FROM EMP;
假設員工入職日期為 2018 年 1 月 1 日,系統日期為 2018 年 8 月 1 日。因此,以上返回 7。
ADD_MONTHS(d,n)
此函式給出與 d 相同的一天,距離 n 個月。n 的值可以是正數或負數。例如
SELECT SYSDATE, ADD_MONTHS (SYSDATE,2) FROM DUAL;
此函式將返回 sysdate 和 sysdate 之後的 2 個月日期,即“2018 年 8 月 1 日”和“2018 年 10 月 1 日”。
LAST_DAY(d)
此函式返回函式中提供的特定月份 d 的最後一天。例如
SELECT SYSDATE, LAST_DAY (SYSDATE) FROM DUAL;
這將返回系統日期和系統日期的特定月份的最後一天,即“2018 年 8 月 1 日”和“2018 年 8 月 31 日”。