二SUBSTR()

說明
SUBSTR 函數返回字符,字符位置開始部分
substring_length 個字符長。SUBSTR 計算長度使用字符作為
由輸入的字符集定義。SUBSTRB 使用字節而不是字符。SUBSTRC
使用完整的 Unicode 字符。SUBSTR2 使用 UCS2 代碼點。SUBSTR4 使用 UCS4
代碼點。
■ 如果立場是 0,那么它被視為 1。
■ 如果位置是積極,然后從開始到 char Oracle 數據庫計數
找到的第一個字符。
■ 如果位置為負數,然后 Oracle 倒推從結尾的字符。
■ 如果省略 substring_length,然后 Oracle 將返回所有字符到末尾
char。如果 substring_length 是小於 1,則 Oracle 返回 null。
字符可以是任何數據類型 CHAR、 VARCHAR2、 NCHAR、 NVARCHAR2、 CLOB 或NCLOB。
例外情況是 SUBSTRC、 SUBSTR2 和 SUBSTR4,不允許字符是
CLOB 或 NCLOB。位置和 substring_length 必須是數據類型數,或
任何數據類型可以隱式轉換為數字,並且必須解析為
整數。返回值是作為字符浮點數傳遞相同的數據類型
作為 SUBSTR 的參數自動轉換為整數。
三:length() lengthb()

說明:
長度函數返回的字符長度長度計算長度使用
定義的輸入字符的字符設置。LENGTHB 使用而不是字節
個字符。LENGTHC 使用完整的 Unicode 字符。LENGTH2 使用 UCS2 代碼
點。LENGTH4 使用 UCS4 代碼點。
字符可以是任何數據類型 CHAR、 VARCHAR2、 NCHAR、 NVARCHAR2、 CLOB 或NCLOB。
例外情況是 LENGTHC、 LENGTH2 和 LENGTH4,不允許字符是
CLOB 或 NCLOB。返回值是數字數據類型。如果 char 數據類型 CHAR,然后
長度,包括所有尾隨空格。如果字符是 null,則此函數返回 null。
四:INSTR()

說明:
INSTR 函數搜索字符串的子字符串。搜索操作定義為
比較與相同長度的字符串的子字符串的子字符串參數
直到找到一個匹配或沒有更多的平等的子字符串左邊。每個連續
比較的字符串的子字符串開始一個字符向右 (向前搜索)
或一個字符向左 (向后搜索) 從第一個字符
以前比較的子字符串。如果找到等於子字符串的子字符串,則
該函數返回一個整數,指示這的第一個字符的位置
子字符串。如果找到了沒有這樣子字符串,則該函數返回零。
■ 位置是一個非零的整數,指示字符串的字符在 Oracle
數據庫開始搜索 — — 第一次的第一個字符的位置
要比較的子字符串的子字符串。如果位置為負值,則 Oracle 計數
落后從結尾的字符串,然后從所得向后搜索
位置。
■ 發生是一個整數,指示子字符串在字符串中的哪個匹配項
Oracle 應搜索。發生的值必須為正數。如果發生
大於 1,則數據庫不能在第一場比賽,但仍
上文所述,直到比賽比較連續字符串的子字符串,
已發現數發生。
INSTR 接受和返回字符的位置,如所輸入的字符集,定義
在位置 1 的字符串的第一個字符。INSTRB 使用而不是字節
個字符。INSTRC 使用完整的 Unicode 字符。INSTR2 使用 UCS2 代碼點。
INSTR4 使用 UCS4 代碼點。
字符串可以是任何數據類型 CHAR、 VARCHAR2、 NCHAR、 NVARCHAR2、 CLOB或 NCLOB。
例外情況是 INSTRC、 INSTR2 和 INSTR4,不允許字符串
CLOB 或 NCLOB。
子字符串可以是任何數據類型 CHAR、 NCHAR、 NVARCHAR2、 VARCHAR2 CLOB,或
NCLOB。
返回的值是數字數據類型。
位置和發生必須是數據類型數或可以任何數據類型
能隱式轉換為數字,並且必須解析為一個整數。默認值
位置和發生,都是 1,意思 Oracle 開始搜索,在第一次
子字符串的第一個匹配的字符串的字符。返回值是相對於
字符串的開始位置,無論位置的值。
五:LPAD() RPAD()
說明:
LPAD 返回 expr1,左填充到長度 n 個字符與字符序列
在 expr2。這個函數是用於格式化輸出的查詢。
Expr1 和 expr2 都可以是任何數據類型 CHAR,VARCHAR2、 NCHAR、 NVARCHAR2,
CLOB 或 NCLOB。返回的字符串是 VARCHAR2 數據類型,如果 expr1 是字符數據
NVARCHAR2 如果 expr1 是國家字符數據類型和 LOB 類型如果 expr1 是 LOB
數據類型。返回的字符串是作為 expr1 相同的字符集。參數 n
必須是一個數字的整數或可以隱式地轉換為數字的值
整數。
如果您不指定 expr2,默認為一個空格。如果 expr1 是長於 n,
然后,此函數返回 expr1 適合的部分在 n。
參數 n 是返回值的總長度是顯示在你
終端屏幕。在大部分的字符集,這也是中的字符數
返回值。然而,在一些多字節字符集的顯示長度
字符的字符串可以不同的字符串中的字符數。
六:TRIM()
說明:
修剪使您可以修剪前導或尾隨字符 (或兩者) 從一個字符
字符串。如果 trim_character 或 trim_source 是原義字符,然后你必須附上
它在單引號中。
■ 如果您指定領先,然后 Oracle 數據庫中刪除任何前導字符
等於 trim_character。
■ 如果您指定尾,然后 Oracle 中移除任何尾隨字符等於
trim_character。
■ 如果指定兩個或三個沒有,然后 Oracle 刪除前導和尾隨
字符等於 trim_character。
■ 如果你沒有指定 trim_character,則默認值是一個空的空間。
■ 如果您指定僅 trim_source,然后 Oracle 刪除前導和尾隨空白
空格。
■ 該函數返回一個值與數據類型 VARCHAR2。最大長度
值是 trim_source 的長度。
■ 如果 trim_source 或 trim_character 是 null,那么 TRIM 函數返回
則為 null。
Trim_character 和 trim_source 可以是 VARCHAR2 或可以是任何數據類型
隱式轉換為 VARCHAR2。返回的字符串是 VARCHAR2 (NVARCHAR2) 數據
如果 trim_source 是 CHAR 或 VARCHAR2 (NCHAR 或 NVARCHAR2) 的數據類型和 CLOB,請鍵入
如果 trim_source 是 CLOB 數據類型。返回的字符串是在相同的字符設置為
trim_source。
日期函數:
一:ADD_MONTHS()增加月數
說明:
ADD_MONTHS 返回日期日期加上整數個月。一個月由定義的。
會話參數 NLS_CALENDAR。日期參數可以是一個 datetime 值或任何
可以隱式轉換為日期的值。整數參數可以是
整數或可以隱式轉換為一個整數的任何值。返回類型是
總是日期,而日期的數據類型。如果日期是本月的最后一天或
如果生成的月有時間少於一天中的日期,然后結果天
是結果月份的最后一天。否則,結果有的同一天
組件作為日期。
二:months_between 兩個日期相差的月數
select months_between
(to_date('02-02-1995','MM-DD-YYYY'),
TO_DATE('01-01-1995','MM-DD-YYYY')) "MONTHS"
from dual;

日期相減
一:兩個日期天數之差
select floor(sysdate - to_date('20020405','yyyymmdd'))from dual;

--隱式轉換
select * from emp where hiredate='17-12月-80';

--顯示轉換

--to_char()對日期的轉換
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

--to_char()對數字的轉換
select to_char(sal,'L9,999,99') from emp;

--數字函數
--round()四舍五入
select round(12.45,1) from dual;

--trunc 截斷
select trunc(15.79,1)"truncate" from dual;

--通用函數
--nv1和nv12 濾空函數
select sal*12工資,comm 獎金,sal*12+nvl(comm,0) from emp;

select sal*12工資,comm 獎金,sal*12+nvl2(comm,comm,0) from emp;

--decode函數
select product_id,
decode(warehouse_id,1,'Southlake',
2,'San Francisco',
3,'New Jersey',
4,'Seattle',
'Non domestic') "Location"
from inventories where product_id< 1775 order by product_id,"Location"
