ORACLE常用函式的使用方法

2022-10-11 01:21:08 字數 4401 閱讀 4160

oracle常用函式的使用方法

1. 字串函式

(1) length(); 獲取字元長度

select length('中國') from platform_metainfo_tables where table_name = 'xmbm'  

(2) lengthb(); 獲取位元組長度

select lengthb('中國') from platform_metainfo_tables where table_name = 'xmbm' (乙個漢字等於兩個位元組)

(3) ltrim();  除去左邊出現的字串

select ltrim(table_name) from platform_metainfo_tables where table_name = 'xmbm' //除去左邊的空格

select ltrim(table_name, 'xmb') from platform_metainfo_tables where table_name = 'xmbm' //除去左邊匹配到的字元xmb

(4) rtrim();  除去右邊出現的字串

select rtrim(table_name) from platform_metainfo_tables where table_name = 'xmbm' //除去右邊的空格

select rtrim(table_name, 'xmb') from platform_metainfo_tables where table_name = 'xmbm' //除去右邊匹配到的字元xmb

(5) trim();   一般都是用在刪除字串兩邊的空格

select trim(table_name) from platform_metainfo_tables where table_name = 'xmbm' //除去字段兩邊出現的空格

select trim(leading 'm' from table_name) from platform_metainfo_tables where table_name = 'xmbm' //刪除左邊出現的指定的字元m

select trim(trailing 'm' from table_name) from platform_metainfo_tables where table_name = 'xmbm' //刪除右邊出現的指定的字元m

select trim(both 'm' from table_name) from platform_metainfo_tables where table_name = 'xmbm'  //刪除兩邊出現的指定字元m

(6) lpad(string,n,[pad_string]);在字串左邊填充特定的字元

string是原始字串, n 要返回的字串長度, 從字串末尾向前數

當pad_string為null時, 會填充空格

(7) rpad(string,n,[pad_string]);在字串右邊填充特定的字元

使用與lpad一樣

(8) substr(); 字串擷取

select substr(table_name, 1 , 4) from platform_metainfo_tables where xmbm = 'xmbm' //擷取從索引1開始的4個字元,結合length()函式可實現從左邊擷取

select  substr(table_name, length(table_name)- 3 + 1,  3) from platform_metainfo_tables where table_name = 'xmbm'

2. 時間函式

設定時間格式: alter session set nls_date_format = 'dd-mon-yyyy hh:mi:ss'

(1) sysdate   //系統時間

(2) current_date   //系統時間

(3) to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'); //將日期轉為字串

(4) to_date('2017-09-22 00:00:00', 'yyyy-mm-dd hh24:mi:ss');  //將字串轉為日期格式

(5) to_timestamp();轉為時間戳格式, 使用類似於to_date()

select to_timestamp(to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ssxff') from  rsgl_ryjbxxb  where xmpy = 'wjw_chengqiong'

時間計算:

>> 過去一小時/一分鐘/一秒

select to_char(to_date('2019/06/04 14:43:51', 'yyyy/mm/dd hh24:mi:ss') - 1/24, 'yyyy/mm/dd hh24:mi:ss') from rsgl_ryjbxxb where xmpy = 'wjw_chengqiong'

>> 過去一天

select to_char(sysdate - 1, 'yyyy/mm/dd hh24:mi:ss') from rsgl_ryjbxxb where xmpy = 'wjw_chengqiong'

>> 過去乙個月

select add_months(sysdate, -1) from rsgl_ryjbxxb  where xmpy = 'wjw_chengqiong'

3.聚合函式

聚合函式不能作為where裡的查詢條件出現, 因為聚合函式是對所有查詢結果的運算

(1) sum求和

select sum(matter_cnsx) from  sp_matters

(2) **g求均值

select **g(matter_cnsx) from  sp_matters  

(3) max和min

select min(matter_cnsx) from  sp_matters  

(4) nvl null值判斷

select nvl(matter_cnsx, '111111111') from  sp_matters  

(5) round四捨五入

select round (**g(matter_cnsx)) from  sp_matters

select  round(**g(matter_cnsx) * 100) / 100 from  sp_matters  (保留小數點幾位)  

(6) count(*) 查詢錶行數

(7) count(column) 查詢列行數 , 會忽略null值

4. 關於sql的優化法則

這些優化方式**於網友的總結,自己在這裡也記錄一下

(1) 盡量少用in操作符,基本上所有的in操作符都可以用exists代替。

原因:oracle在執行in子查詢時,首先執行子查詢,將查詢結果放入臨時表再執行主查詢。

而exist則是首先檢查主查詢,然後執行子查詢直到找到第乙個匹配項。

not exists 比 not in 效率稍高。但具體在選擇in或exist操作時,

要根據主子表資料量大小來具體考慮。

select * from sp_matters where uuid in (select uuid from sp_matters)

select * from sp_matters where exists (select uuid from sp_matters where uuid = sp_matters.uuid)

(2) 不用"<>"或者"!="操作符, 對於不等於操作符會造成全表掃瞄, 應該用">" or "

(3) is null 或者 is not null 條件會造成全表掃瞄, 解決方案可以為該列設定非空索引,就可以利用其它條件判斷

(4) 在like後面出現萬用字元 "%" 或者 "_" 時, 索引會失效, 造成全表掃瞄

(5) 對於有連線的列"||",最後乙個連線列索引無效, 盡量避免連線, 可以分開連線或者使用不作用在列上的函式替代

(6) 如果索引不是基於函式的,那麼當在where子句中對索引列使用函式時, 索引不再起作用

(7) 對資料型別不同的列進行比較時,會使索引失效

(8) >= 比 >的執行效率高, 原因: >= 會通過索引快速定位等於項, 然後再向下掃瞄, 選出大於項, 而》 直接走全表掃瞄

(9) union和union all的區別

union會對結果進行篩選, 消除重複, 資料量大的情況下可能會引起磁碟排序, 如果不刪除重覆記錄

應該使用union all

(10) oracle從下到上多個查詢條件時, 應該將過濾量最大的條件放在where子句的末尾

(11) oracle 從右到左處理from後面的多個表時, 應該將資料量最少的表放在最後

(12) order by 語句中的非索引列會降低效能, 可以將排序列新增索引

(13) 當前sql連線多個表時, 使用表的別名, 並將之作為每列的字首, 這樣可以減少解析時間

Oracle的to char函式使用方法

postgres 格式化函式提供一套有效的工具用於把各種資料型別 日期 時間,int,float,numeric 轉換成格式化的字串以及反過來從格式化的字串轉換成原始的資料型別。注意 所有格式化函式的第二個引數是用於轉換的模板。表 5 7.格式化函式 函式 返回描述 例子to char timest...

Juqery 常用函式使用方法

1.文件載入完成執行函式 document ready function 2.新增 刪除css類 some id addclass newclassname some id removeclass classnametoberemoved 3.選擇符 利用了css和xpath xml path la...

ORACLE中TRUNC 函式的使用方法

對於oracle中的trunc 函式也許還有人對它不是很了解,這篇文章將對它進行講解.trunc 函式分兩種 1.trunc for dates 為指定元素而截去的日期值 其具體的語法格式如下 trunc date fmt 其中 date是乙個日期值,fmt是日期格式,該日期將由指定的元素格式所截去...