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”的位置