Oracle 常用函數

来源:http://www.cnblogs.com/java-class/archive/2016/02/18/5199145.html
-Advertisement-
Play Games

主要是對項目中用過的 oracle 函數進行總結,並做出目錄,方便後續項目是快速查找,提高效率。 01.Round (數值的四捨五入) 描述:傳回一個數值,該數值是按照指定的小數位元數進行四捨五入運算的結果。 SELECT Round(Number,[Decimal_Places])FROM Dua


     主要是對項目中用過的 oracle 函數進行總結,並做出目錄,方便後續項目是快速查找,提高效率。

01.Round (數值的四捨五入)

描述:傳回一個數值,該數值是按照指定的小數位元數進行四捨五入運算的結果。

SELECT Round(Number,[Decimal_Places])FROM Dual;

param:
Number:欲處理的數值
Decimal_Places:四捨五入,小數取幾位(預設為0)
Sample:

SELECT Round(123.456,1)FROM Dual;

output:123.5

SELECT Round(123.4567,3)FROM Dual;

output:123.458

02.Case ...When... (oracle 的if...else...)

case XX屬性(可不填) when XX屬性判斷 then XX else XX end 你要賦值的表屬性
Sample:
CASE lanage
WHEN lanage='java' then
'01'
else
'02'
end code;
case ... when 類似與程式語言中的 if(){}else{}

03.Nvl (數據表欄位的判空處理)

Nvl(string, replace_with)
param:
string:欲處理字元串
replace_with:要替換的字元串
如果string為NULL,則NVL函數返回replace_with的值,否則返回string1的值,如果兩個參數都為NULL ,則返回NULL
可以用於欄位判空後的處理操作,比如教室職稱,如果欄位為空,都預設為普通。
Sample:

select nvl(t.title,'普通') from teacher t;

04.Decode (欄位名稱的轉換)

decode(XX屬性,XX屬性值,'要轉譯為的字元串')函數:
舉例:

Select decode (t.title,'01','普通','02','高級','其他') from teacher 
這個函數在項目中用的比較多,與上面的case_when..其實有點相似

05.樹遞歸查詢

select ...
from ....
start with ....[開始遞歸遍歷的起點]
connect by prior [級聯關係,比如 下級.parentid = 上級.id]
當前表欄位=級聯表欄位 start with與connect by prior語句完成遞歸記錄,形成一棵樹形結構,通常可以在具有層次結構的表中使用。

06.Trunc (截取日期和數字處理)

其具體的語法格式如下:

1)Trunc(Date[,Fmt])
Trunc(To_Date('24-Nov-199908:00Pm'),'Dd-Mon-YyyyHh:MiAm'='24-Nov-199912:00:00Am'
2)Trunc(ForNumber)
--Trunc函數返回處理後的數值,其工作機制與Round函數極為類似,只是該函數不對指定小數前或後的部分做相應舍入選擇處理,而統統截去。
Trunc(89.9852=89.98
Trunc(89.985=89
Trunc(89.985-1=80 
如果我們不需要從具體的表來取得

表中數據,而是單純地為了得到一些我們想得到的信息,並要通過Select完成時,就要藉助一個對象,這個對象,就是Dual;
就是將數值型或者日期型轉化為字元型。
Sample:

To_Char(Number,'格式')
To_Char(Salary,’$99,999.99’)

07.Regexp_Substr (正則表達式的匹配)

Regexp_Substr(String,Pattern,Position,Occurrence,Modifier)
__Srcstr:需要進行正則處理的字元串
__Pattern:進行匹配的正則表達式
__Position:起始位置,從第幾個字元開始正則表達式匹配(預設為1)
__Occurrence:標識第幾個匹配組,預設為1
__Modifier:模式('i'不區分大小寫進行檢索;'c'區分大小寫進行檢索。預設為'c'。)

Sample:

Select Regexp_Substr('17,20,23','[^,]+',1,1,'i') As Str From Dual;

08.Substr (字元串的截取)

Substr(字元串,截取開始位置,截取長度)
Substr('HelloWorld',1,1)//返回結果為'h'*0和1都是表示截取的開始位置為第一個字元
Substr('HelloWorld',2,4)//返回結果為'Ello'

09.Replace('要更改字元串','被替換掉','替換')

Sample:

SelectReplace('111222333444','222','888')FromDual;

output:'111888333444'

10.Instr (字元串中特定字元的索引位置,從1開始)

Instr(源字元串,目標字元串,起始位置,匹配序號)
Instr函數返回要截取的字元串在源字元串中的位置。只檢索一次,就是說從字元的開始到字元的結尾就結束。

Param:

Instr(String1,String2[,Start_Position[,Nth_Appearance]])
String1源字元串,要在此字元串中查找。
String2要在String1中查找的字元串.
Start_Position代表String1的哪個位置開始查找。此參數可選,如果省略預設為1.字元串索引從1開始。如果此參數為正,從左到右開始檢索,如果此參數為負,從右到左檢索,返回要查找的字元串在源字元串中的開始索引。
Nth_Appearance代表要查找第幾次出現的String2.此參數可選,如果省略,預設為1.如果為負數系統會報錯。
SelectInstr('Syranmo','s')FromDual;--返回1
SelectInstr('Syranmo','Ra')FromDual;--返回3

11.add_months (獲取特定月份)

add_months(data,number)函數輸入日期上加上指定的幾個月返回一個新的日期;
Sample:

add_months(to_date('15-Nov-1961','d-mon-yyyy'),1) 

output:  15-Dec-1961
add_months(sysdate, -1) 返回當前日期月份-1,就是上月


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Ios中的定位功能是通過 Core Location框架實現的。它和地圖開發框架是相互獨立的。在Core Location中主要實現了定位和地理編碼的功能! 下麵我們就來介紹一下它的屬性,方法和代理方法! 屬性: desiredAccuracy:定位精度,是一個枚舉類型 //kCLLocationA
  • package com.example.yanlei.picture; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import androi
  • ZXing的二維碼功能的提取lib下載地址:https://github.com/xuyisheng/ZXingLib 1.掃描二維碼: 我們掃描就是要用到這個CaptureActivity類,直接把上面下載地址裡面下載了裡面的libzxing作為Module,如下圖: 首先加上許可權: <!-- 相
  • 抖動效果在開發中比較少用到,不過有時使用了確有個很好的裝逼效果,用的時候就例如一些用戶錯誤操作之類的 效果如下,不過gif看到的效果沒實際的好看 上代碼 1 - (void)shakeAnimationForView:(UIView *) view 2 3 { 4 // 獲取到當前的View 5 6
  • 第十一章 Android的線程和線程池 從用途上來說,線程分為子線程和主線程,主線程主要處理和界面相關的事情,而子線程往往用於執行耗時的操作。AsyncTask,IntentService,HandlerThread都可以扮演線程的角色。 AsyncTask封裝了線程池和Handler,主要是為了方
  • 分類:C#、Android、VS2015; 創建日期:2016-02-18 1、主界面運行截圖 2、MainActivity.cs文件中對應的代碼 chItems.Add(new Chapter() { ChapterName = "第10章 擴展組件庫和其他視圖", ChapterItems = ...
  • 博客園第三方客戶端-i博客園正式發佈App Store 1. 前言 算來從15年8月到現在自學iOS已經快7個月了,雖然中間也是斷斷續續的,不過竟然堅持下來了。年後要找實習啦,於是萌生了一個想法 —— 寫一個app練練手。這次我沒弄後臺了,直接使用了博客園的open api(嘿嘿)。之前也做過一個a
  • 代碼: RootViewController.m #import "RootViewController.h" @interface RootViewController () @end @implementation RootViewController - (id)initWithNibName
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...