oracle一些常用的單記錄函式

2022-02-23 05:49:49 字數 4140 閱讀 8413

總結一些oracle中常用的單記錄函式。

1.0 nvl()

作用:從兩個表示式返回乙個非null值

用法:nvl(表示式1, 表示式2)

如果表示式1的結果不為null,返回表示式1的結果;如果表示式1的結果為null,返回表示式2的結果。

引申:表示式1的結果為null,返回表示式2的結果,而表示式2的結果為null,則最終返回null,可以得出乙個偽結論是「如果表示式1和表示式2的結果都為null,則返回null」。

nvl(123, 456) // 結果是123

1.1 nvl2()

作用:從三個表示式中返回乙個

用法:nvl(表示式1, 表示式2, 表示式3)

如果表示式1的結果是null,返回表示式3的結果;如果表示式1的結果不為null,返回表示式2的結果。

nvl2(null, 123, 456) //

結果是456

nvl2(

123, 456, 789) // 結果是456

2.0 lower()

作用:將字串中的大寫字母轉為小寫

用法:lower(字串)

3.0 upper()

作用:將字串中的小寫字母轉為大寫

用法:upper(字串)

4.0 sys_guid()

作用:以16位raw型別值形式返回乙個全域性唯一的識別符號

用法:sys_guid()

常用作生成id。

select sys_guid() id from dual //

直接使用,結果是亂碼

select rawtohex(sys_guid()) id from dual //

結果是數字和大寫字母組合的字串

select

lower(sys_guid()) id from dual // 轉成小寫

5.0 length()

作用:按字元取字串長度

用法:length(字串)

1個中文、英文本母、數字、中文符號、英文符號、全形符號、空格都算1個字元。

length('

你好嗎') // 結果是3

5.1 lengthb()

作用:按位元組取字串長度

用法:length(字串)

1個中文、全形符號是2個位元組;1個英文本母、數字、英文符號、空格是1個位元組。

lengthb('

你好嗎') // 結果是6

oracle中函式後帶"b"的都是以位元組為單位的。

6.0 trim()

作用:刪除兩邊空格或指定字元

用法:trim(刪除方向 要刪除的指定字元 from 源字串)

刪除方向和要刪除的指定字元為可選引數,當要使用它們時,from關鍵字必須。

刪除方向有三種:leading(從字串的頭開始刪除)、trailing(從字串的尾部開始刪除)、both(從字串兩邊刪除)。不指定刪除方向,則預設是both。

要刪除的指定字元只能是乙個字元,不能是字串。不指定要刪除的指定字元,則預設是空格。

trim()只能刪除半形空格。

trim(both '1'

from

'12121

') // 結果是212

6.1 ltrim()

作用: 刪除左邊空格或指定字串中的所有字元

用法:ltrim(源字串, 要刪除的指定字串)

要刪除的指定字串為可選引數,不指定預設是空格。

trim('

21233213

', '

12') // 結果是33213。刪掉了左邊所有的1和2

6.2 rtrim()

作用:刪除右邊空格或指定字串中的所有字元

用法:rtrim(源字串, 要刪除的指定字串)

要刪除的指定字串為可選引數,不指定預設是空格。

trim('

2332131

', '

13') // 結果是2332。刪掉了右邊所有的1和3

7.0 replace()

作用:替換字串中的指定字串(全部替換)

用法:replace(源字串, 目標字串, 替換的字串)

替換的字串為可選引數,不指定預設是去除。

replace('

12121

', '

1') // 結果是22,1全部被替換了

8.0 lpad()

作用:按位元組從左邊對字串使用指定的字元進行填充

用法:lpad(源字串, 填充後的字串長度, 填充的字串)

填充的字串為可選引數,不指定預設為空格。

如果填充後的字串長度比源字串長度要短,函式會將源字串從左到右擷取成符合填充後的字串長度的字串。

lpad('

如果填充的字串長度 > 待補長度,填充的字串也會被擷取後再進行填充,相反則會不斷重複填充至待補長度為0。

lpad('

', 10, '

1239.0 rpad()

作用:按位元組從右邊對字串使用指定的字元進行填充

用法:rpad(源字串, 填充後的字串長度, 填充的字串)

填充的字串為可選引數,不指定預設為空格。

如果填充後的字串長度比源字串長度要短,函式會將源字串從左到右擷取成符合填充後的字串長度的字串。

rpad('

如果填充的字串長度 > 待補長度,填充的字串也會被擷取後再進行填充,相反則會不斷重複填充至待補長度為0。

rpad('

', 10, '

12310.0 substr()

作用:擷取指定長度的字串

用法:substr(源字串, 擷取開始位置, 擷取長度)

擷取長度為可選引數。擷取開始位置為正數時,不指定預設擷取到末尾。

當擷取開始位置是0或1的時候,都是從第一位開始擷取(區別於下標,位置從1開始計算)。

當擷取開始位置為負數時,反向擷取。從最後一位開始擷取相應的|擷取開始位置|長度的字串,當且僅當|擷取開始位置| > 擷取長度時擷取長度才會生效。

substr('

abcdefgh

', -

5, 6) // 結果是efghi,相當於substr('

abcdefgh

', -

5, 5)

substr('

abcdefgh

', -

5, 2) // 結果是gh

11.0 instr()

作用:在字串中檢索指定字串,返回檢索匹配起始位置

用法:instr(源字串, 目標字串, 檢索起始位置, 匹配第幾次出現)

檢索起始位置和匹配第幾次出現為可選引數。不指定預設都是1。

檢索起始位置為負數時,反向檢索,但是返回的匹配位置仍然是正向順序。

instr('

abcdefgh

', '

ef', -

2) // 結果是5

匹配第幾次出現指目標字串在字串中第幾次出現。

instr('

abefcdefgh

', '

ef', 2, 2) // 結果是7,檢索第二次出現的ef

檢索不到,返回0,因此可以用 > 0 來表示匹配成功。作用和 like '%字串%' 相當。

"我本來是個很黯淡的人,是你給了我漫天星光。"

記錄一些oracle命令

1 查詢哪些使用者擁有dba許可權 select from dba role privs where granted role dba 2 查詢當前使用者所擁有的系統許可權 select from user sys privs 3 查詢當前使用者被授予的角色 select from user rol...

一些常用的演算法記錄

1 插入演算法 public static void main string args arr j 1 temp 2 歸併排序 public static void main string args date time1 new date long a1 time1.gettime for int ...

一些常用方法的記錄

1.建立臨時目錄 建立臨時目錄 try catch ioexception e 結果 2.正規表示式的組 測試正規表示式 string slippingwindowpointoprand s s s string slippingwindowpointcollectoprand slippingwi...