1. 程式人生 > 其它 >SQL常用函式

SQL常用函式

技術標籤:sql

substr() 函式:

substr(string,start,length)
引數 必須 引數說明
string 必須 指定的要擷取的字串
start 必須 規定在字串的何處開始:正數 - 在字串的指定位置開始;負數 - 在從字串結尾的指定位置開始;0 - 在字串中的第一個字元處開始
length 可選 指定要擷取的字串長度,預設時返回字元表示式的值結束前的全部字元

例如:
select substr(‘abcdefg’,3,4) from dual;結果是cdef

instr()函式:

instr(sourceString,destString,start,appearPosition)


instr(‘源字串’ , ‘目標字串’ ,‘開始位置’,‘第幾次出現’)
其中:

  • sourceString代表源字串;
  • destString代表要從源字串中查詢的子串;
  • start代表查詢的開始位置,這個引數可選的,預設為1;
  • appearPosition代表想從源字元中查找出第幾次出現的destString,這個引數也是可選的, 預設為1

如果start的值為負數,則代表從右往左進行查詢,但是位置資料仍然從左向右計算。
返回值為:查詢到的字串的位置。

對於instr函式,我們經常這樣使用:從一個字串中查詢指定子串的位置。

例如:
SQL> select instr(‘abcdefgh’,‘de’) position from dual;

結果:4

trim( )函式:

trim([leading/trailing/both][匹配字串或數值][from][需要被處理的字串或數值])

這裡如果指明瞭leading表示從刪除頭部匹配的字串,如果指明瞭trailing表示從刪除尾部匹配的字串,如果指明瞭both,或者不指明任何位置,則兩端都將被刪除

如果不指明任何匹配字串或數值則認為是空格,即刪除前面或者後面的空格。

trim函式返回的型別是varchar2

例如:

select trim(0 from 7500) from dual; 結果是:75
select trim(’ my friend ') from dual; my friend

decode()函式:

主要作用:將查詢結果翻譯成其他值(即以其他形式表現出來,以下舉例說明);

使用方法:

Select decode(columnname,值1,翻譯值1,值2,翻譯值2,…值n,翻譯值n,預設值)From talbename Where …

其中columnname為要選擇的table中所定義的column,

·含義解釋:

decode(條件,值1,翻譯值1,值2,翻譯值2,…值n,翻譯值n,預設值)的理解如下:

例如:
decode(substr(trim(a.t e r p c o d e ) , 13 , 2 ) , ′ − 1 ′ , ′ 80 0 ′ , ′ ′ ) 去 除 a . t erpcode),13,2),'-1','800','') 去除a.t erpcode),13,2),1,800,)a.terpcode首尾空格後,從第13位起取兩位,如果這兩位字串為-1 則替換為800,其餘預設為空。

row_number() over(partition by)函式:

row_number() over(partition by 列名1 order by 列名2 desc)

解析:

表示根據 列名1 分組,然後在分組內部根據 列名2 排序,而此函式計算的值就表示每組內部排序後的順序編號,可以用於去重複值
與rownum的區別在於:使用rownum進行排序的時候是先對結果集加入偽列rownum然後再進行排序,而此函式在包含排序從句後是先排序再計算行號碼.

例如:–分析函式(檢視重複)

SELECT *
  FROM (SELECT USER_NAME,
               SCHOOL,
               DEPART,
               ROW_NUMBER() OVER(PARTITION BY USER_NAME,SCHOOL,DEPART, ORDER BY USER_NAME DESC) RN
          FROM USER_M)
 WHERE RN > 1;

instr()函式的格式 (俗稱:字元查詢函式)

格式一:instr( string1, string2 ) // instr(源字串, 目標字串)

格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) // instr(源字串, 目標字串, 起始位置, 匹配序號)

解析:string2 的值要在string1中查詢,是從start_position給出的數值(即:位置)開始在string1檢索,檢索第nth_appearance(幾)次出現string2。

注:在Oracle/PLSQL中,instr函式返回要擷取的字串在源字串中的位置。只檢索一次,也就是說從字元的開始到字元的結尾就結束。

例:
select instr(‘helloworld’,‘l’) from dual; --返回結果:3 預設第一次出現“l”的位置