1. 程式人生 > >oracle各種基本函式查詢

oracle各種基本函式查詢

oracle函式:
--數值函式
--字元函式
--日期函式
--轉換函式
----------------------------------------------
數值函式:
--四捨五入:--ROUND(n,m)
--m>0:小數點後m位  m<0:小數點前m位
select round(2222.222), round(2222.222, 1), round(2222.222, -1) from dual
--結果:2222	2222.2	2220


--取整函式
--1.ceil(n)取整加1  2.floor(n)取整減1
select ceil(2222.222), floor(2222.222) from dual
--結果:2223	2222


--常用計算
--1.abs(s):取絕對值  
select abs(2222.222), abs(-2222.222), abs(0) from dual
--結果:2222.222	2222.222	0
--2.mod(m,n)  取餘數 m/n的餘數,如果m或n為null,結果則為null
select mod(2222.222,2) from dual
--結果:0.222	
--3.power(m,n)  返回m的n次冪
select power(2,3) from dual
--結果: 8   (2的三次方)
--4.sqrt(n) 求平方根
select sqrt(16) from dual
--結果:4 


--三角函式
--sin(n),asin(n),cos(n),acos(n),tan(n),atan(n)


----------------------------------------------
字元函式:
--1.大小寫轉換函式
--upper(char)小寫變大寫  lower(char)大寫變小寫  initcap(char)首字母大寫
select upper('zhanghaochun'), lower('ZHANGhaochun'), initcap('zhanghaochun')
  from dual
--結果:ZHANGHAOCHUN	zhanghaochun	Zhanghaochun
--應用場景:登入時不區分大小寫


--2.獲取子字串函式
--substr(char,m,n)  m:取子串的開始位置  n:擷取子串的位數
select substr('zhanghaochun', 6, 3) from dual
--結果:hao   (從第6個開始擷取,擷取3個)


--3.獲取字串長度函式
--length(char)
select length('zhanghaochun') from dual
--結果:12
--應用場景:查詢名字超過三個的人的資訊


--4.字串連線函式
--concat(char1,char2)
--與||操作符的作用一樣
select concat('中華', '人民'), '中華' || '人民' from dual
--結果:中華人民	中華人民


--5.去除子串函式
--5.1:trim(c2 from c1)  表示從c1中去除掉 c2 這個字串
select trim('z' from 'zhanghaochun') from dual;
--結果:hanghaochun  僅能擷取掉一個字元,第一個字元
--5.2:ltrim(c1,c2)  從左邊去除
--5.3:rtrim(c1,c2)  從右邊去除
--5.4:trim(c1)  去除兩邊的空格


--6.替換函式
--replace(char,s_string1,s_string2)   s1:需要替換的內容  s2:替換成什麼內容
--s_string2為空時,預設用空格替換
select replace(' ', 'a', 'A') from dual;
--結果:AAbbAAccAAdd    將a換成A


----------------------------------------------
日期函式:
--系統時間
--sysdate
select sysdate today from dual;
--結果:2017/5/22/週一 15:46:42


--日期操作
--1.add_months(date,i)   i:想要加上幾個月,為整數。如果是小數,則擷取整數部分
--作用:正數:返回在指定日期上增加幾個月份  負數:返回在指定日期上減少幾個月份
select add_months(sysdate, 3), add_months(sysdate, -3) today from dual;
--結果:2017/8/22/週二 15:55:39	2017/2/22/週三 15:55:39


--2.next_day(date,char)
--作用:如果char的值是'星期一',則返回date指定日期的下週一是哪天
select sysdate, next_day(sysdate, '星期一') from dual;
--結果:2017/5/22/週一 16:04:53	  2017/5/29/週一 16:04:53


--3.last_day(date)
--作用:返回所在月的最後一天
select sysdate, last_day(sysdate) from dual;
--結果:2017/5/22/週一 16:09:14	2017/5/31/週三 16:09:14


--4.months_between(date1,date2)
--作用:計算兩個日期之間相隔的月份
select months_between(add_months(sysdate, 12), sysdate) from dual;
--結果:12    等同於兩個日期的值直接相減


--5.extract(date from datetime)
--作用:從datetime裡找出date的時間
select sysdate,--2017/5/22/週一 16:23:36
       extract(year from sysdate),--2017
       extract(month from sysdate),--5
       extract(day from sysdate)--22
  from dual;
--結果:2017/5/22/週一 16:23:36	2017 5	22
--hour minites 


--統計季度






----------------------------------------------
轉換函式:
--1.日期轉換成字元
--to_char(date,fmt)  date:將要轉換的日期  fmt:轉換的格式
select to_char(sysdate, 'yyyy-MM-dd  HH24:MI:ss') from dual;
--結果:2017-05-23  09:37:25


--2.字元轉換成日期
--to_date(char,fmt) char:要轉換的字串  fmt:轉換的格式
select to_date('2017-05-23', 'yyyy-MM-dd') from dual;
--結果:2017/5/23/週二     只會按照系統預設格式顯示日期


--3.數字轉換成字元
--to_char(number,fmt)  number:所要轉換的數字型別資料  fmt:所要的格式資料
select to_char(123456.789, '$999,999.999') from dual
--結果: $123,456.789
select to_char(123456.789, 'S999,999.999') from dual
--結果:+123,456.789


--4.字元轉換成數字
--to_number(char,fmt)  char:想要轉換的字元  fmt:想要的格式 
select to_number('$1,000','$9999') from dual;
--結果:1000




--fmt日期格式:
--年:YY  YYYY  YEAR
--月:MM  MONTH
--日:DD  DAY
--時:HH24  HH12
--分秒:MI  SS


--fmt數字轉字元格式:
--9:顯示數字並忽略前面的0
--0:顯示數字,位數不足,用0補齊
--. 或 D:顯示小數點
--,或 G:顯示千位符
--$:美元符號
--S:加正負號(前後都可以)




--其他函式:


--nvl(a,b)
--如果a為空,則顯示b,如果不為空,則顯示a
--類似於三元運算子
select nvl('','資料為空') from dual;
--結果:資料為空
--場景:
--當執行插入資料時,欄位約束不能為空,就可以用該函式給一個預設值


--DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
select decode(100,10,'值是10','30','值為30','50','值為50','10000') from dual;
--結果:10000
--switch(value){if1:then1;if2:then2;if3:then3;else}
--場景:
--執行復雜判斷的時候可以用到




--case when if1 then end1  else default end
select case
         when 100 = 10 then
          '值為10'
         when 100 = 100 then
          '值為100'
         when 100 = 1000 then
          '值為1000'
         else
          '預設值'
       end
 from dual;
--結果:值為100
--場景,執行復雜判斷時
--運用例子(統計符合特定條件的費用資訊)
sum(case when d.bka432 not in ('101','102') and d.bka078 in('C001','C002','C003') and d.aaa157 = '999' then d.aae019 else 0 end ) BKE108--統籌支付費用

相關推薦

oracle各種基本函式查詢

oracle函式: --數值函式 --字元函式 --日期函式 --轉換函式 ---------------------------------------------- 數值函式: --四捨五入:--ROUND(n,m) --m>0:小數點後m位 m<0:小數

Oracle-02-基本select查詢

下面開始執行基本select語句 conn oracle select * from tab; 檢視oracle下面所有的物件 TNAME TABTYPE CLUSTERID ------------------

[oracle自定義函式]查詢表格的行數

假如要查的表為emp(員工表),在scott使用者下預設有這張表。當前有14條記錄。 只需要執行 select count(*) from emp; 需求:現在要把表名變成動態傳入的,想查哪張表的行數只要傳入表名就行了 一、準備工作 在寫這個之前,我們先來寫一個根據員

oracle自定義函式查詢資料字典項

 /****************************** 假設儲存資料字典表名:data_dict_entry  表結構如下: create table data_dict_entry  (   DICTTYPEID VARCHAR2(128) not null,

ORACLE查詢語句的執行順及where部分條件執行順序測試 Oracle中的一些查詢語句及其執行順序 Select 語句執行順序以及如何提高Oracle 基本查詢效率

Oracle中的一些查詢語句及其執行順序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查詢條件:1)LIKE:模糊查詢,需要藉助兩個萬用字元,%:表示0到多個字元;_:標識單個字元。2)IN(list):用來取出符合列表範圍中的資料。3)NOT I

Oracle (02)SELECT.函式.多表查詢.笛卡爾乘積.SQL99 標準連線.組函式.

SELECT order by 子句 (排序) *** 筆記中出現的[] 表示可以忽略的引數! 編寫的格式有一個特點: order by子句 , 如果出現, 必須放在select語句的最後面! order by 可以對查詢的結果集, 指定排序的規則! 規則: 升序(asc

oracle各種常用函式大全

1.字元函式   (1)concat(str1,str2)字串拼接函式 select concat('Hello ','World') from dual; --等價於 select 'Hello '||'World' from dual;   (2)initcap(s

Oracle基本語法查詢語句

Oracle基本查詢語法 本文含含: 基礎/基本查詢/排序/函式(單/多) 一.前言知識 1.oracle如何操作硬碟上的檔案,最終都是以程序方式操作硬碟上的檔案,最基本程序:讀 寫 ,還有其他客戶端

oracle利用分析函式row_number()over()查詢一張表所有欄位並按照其中部分欄位分組查詢某欄位最大值

先準備資料: deptid :部門id. parent_deptid :deptid 的父級部門,也就是depid 是他的子部門。 create table test_employee (empid int ,deptid int ,parent_deptid int,sa

C/C++:各種基本演算法實現小結(六)—— 查詢演算法

各種基本演算法實現小結(六)—— 查詢演算法 (均已測試通過) =================================================================== 1、簡單查詢 在一組無序數列中,查詢特定某個數值,並返回其位置

oracle 使用instr()函式對in查詢出的記錄按照in中的資料進行排序

需求:輸入漢字,得出它的拼音碼、五筆碼; 方法:使用instr()函式 select * from cnword where word in ('我','們','是','祖','國','的','花',

Oracle基本函式-大小寫轉換函式

UPPER():所有字母轉換為大寫 LOWER():所有字母轉換為小寫 INITCAP():所有單詞首字母與轉換為大寫 declare v_namelower varchar2(50) := 'k

關於Oracle資料庫基本知識②——常見函式理解

oracle函式還是很重要的,可以增強sql語句功能,在這裡簡單講下關於oracle11g環境下的一些函式理解: 1、Concat()函式 Concat:連線兩個不同的列,concat只能接受兩個引數。 /* Concat:連線兩個不同的列,concat只能接受兩個引數 */

oracle 使用自定義函式查詢條件效率非常低

說到這裡我要提一個oracle函式的屬性,就是deterministic。它表示一個函式在輸入不變的情況下輸出是否確定,像oracle的內建函式UPPER,TRUNC等都是deterministic函式,而像DBMS_RANDOM.VALUE就不是deterministic函式,因為同樣的輸入不一定會導致同樣

Oracle資料庫基本連線資訊查詢

--獲取當前的連線數 select count(*) from v$process;--獲取最大連線數 select value from v$parameter where name='processes'; select value from v$parameter w

Oracle之單表查詢及常用函式

1.語法:   select 欄位列表   from 表名   [where 查詢條件]   [group by 分組]   [having 分組條件]   [order by 排序] select * 代表查詢所有的欄位 select

榮工又解決問題了:用ORACLE的sys_connect_by_path函式,獲得遞迴查詢路徑上各個節點的運算值

語句示例如下 Select JgId,JgType,OrgCode,Orgname,DepCode,DepName,ClsCode,ClsName,EtpCode,EtpName        sys_connect_by_path(PlanRate,'*') from

一、Oracle之單表查詢和常用函式

一、Oracle概念 1. 資料庫 Oracle 資料庫是資料的物理儲存。這就包括(資料檔案 ORA 或者 DBF、控制檔案、聯機日誌、引數檔案)。其實 Oracle 資料庫的概念和其它資料庫不一樣,這裡的資料庫是一個作業系統只有一個庫。可以看作是 Ora

oracle各種查詢語句

1. Oracle安裝完成後的初始口令?  internal/oracle   sys/change_on_install   system/manager   scott/tiger   sysman/oem_temp 2. ORACLE9IAS W

Oracle RAC基本概念

特定 遷移 解決方案 開發人員 安裝配置 獲得 情況 網格 play   原文鏈接:http://tech.it168.com/a2012/0814/1384/000001384756_all.shtml   不同的集群產品都有自己的特點,RAC的特點包括如下幾點:   ·