一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - Oracle中字符串截取常用方法總結【推薦】

Oracle中字符串截取常用方法總結【推薦】

2020-04-03 18:08魔劍坊 Oracle

這篇文章主要介紹了Oracle中字符串截取常用方法總結,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

substr 函數:截取字符串 

語法:SUBSTR(string,start, [length])

string:表示源字符串,即要截取的字符串。

start:開始位置,從1開始查找。如果start是負數,則從string字符串末尾開始算起。

length:可選項,表示截取字符串長度。

示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT SUBSTR('Hello SQL!', 1) FROM dual
 
 --截取所有字符串,返回'Hello SQL!'
 
SELECT SUBSTR('Hello SQL!', 2) FROM dual
 
 --從第2個字符開始,截取到末尾。返回'ello SQL!'
 
SELECT SUBSTR('Hello SQL!', -4) FROM dual 
 
--從倒數第4個字符開始,截取到末尾。返回'SQL!'
 
SELECT SUBSTR('Hello SQL!', 3, 6) FROM dual
 
--從第3個字符開始,截取6個字符。返回'llo SQ'
 
SELECT SUBSTR('Hello SQL!', -4, 3) FROM dual
 
--從倒數第4個字符開始,截取3個字符。返回'SQL'

 instr 函數:返回子字符串在源字符串中的位置 

語法:INSTR(string,child_string,[start],[show_time])

string:表示源字符串。

child_string:子字符串,即要查找的字符串。

start:可選項,開始位置,默認從1開始。如果為負數,則從右向左檢索。

show_time:可選項,表示子字符串第幾次出現在源字符串當中,默認第1次,負數則報錯。

示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
--表示從源字符串'city_company_staff'中第1個字符開始查找子字符串'_'第1次出現的位置
 
SELECT INSTR('city_company_staff', '_') FROM dual
 
--返回5
 
--表示從源字符串'city_company_staff'中第5個字符開始查找子字符串'_'第1次出現的位置
 
SELECT INSTR('city_company_staff', '_', 5) FROM dual 
 
--返回5
 
--表示從源字符串'city_company_staff'中第5個字符開始查找子字符串'_'第1次出現的位置
 
SELECT INSTR('city_company_staff', '_', 5, 1) FROM dual 
 
--返回5
 
--表示從源字符串'city_company_staff'中第3個字符開始查找子字符串'_'第2次出現的位置
 
SELECT INSTR('city_company_staff', '_', 3, 2) FROM dual  --返回13
 
--start參數為-1,從右向左檢索,查找'_'字符串在源字符串中第1次出現的位置
 
SELECT INSTR('city_company_staff', '_', -1, 1) FROM dual 
 
--返回13
 
--start參數為-6,從右向左檢索,查找'_'字符串在源字符串中第2次出現的位置
 
SELECT INSTR('city_company_staff', '_', -6, 2) FROM dual 
 
--返回5
 
 substr 函數結合 instr 函數截取字符串

現有需求:數據查詢處理需要對code進行"拆分"

code命名規則類似:城市_所屬公司_員工職位_員工姓名

其中,城市、公司、職位、姓民字符串長度不固定,由于字符串長度不固定,只使用substr函數無法實現需求,需配合instr函數定位到字符'_'的位置,然后使用substr函數進行截取。詳細見下面例子。

表數據如下:

?
1
2
3
4
SOURCE_CODE
   BJ_BAIDU_CEO_LY
   SH_BOKE_MANAGER_LWX
   HRB_WM_CASHIER_OYZY

  獲取城市:

?
1
SELECT SUBSTR (SOURCE_CODE, 1, INSTR (SOURCE_CODE, '_', 1, 1) - 1) AS CITYFROM TABLE_CODE_TEST

結果:

 BJ

SH

HRB

解釋:此處截取源字符串SOURCE_CODE,從第1個字符開始,由于代表城市的code長度不固定,我們無法確定截取幾個字符,所以使用instr函數判斷第一個'_'字符的位置,進而確定每個SOURCE_CODE截取幾個字符串。

那為什么減1呢?

是因為INSTR (SOURCE_CODE, '_', 1, 1)獲取的是源字符串中'_'字符第一次出現的位置,再減1就得出了CITY字符個數。

獲取公司:

?
1
SELECT SUBSTR ( SOURCE_CODE,  INSTR (SOURCE_CODE, '_', 1, 1) + 1,  INSTR (SOURCE_CODE, '_', 1, 2) - INSTR (SOURCE_CODE, '_', 1, 1)-1 ) AS COMPANYFROM TABLE_CODE_TEST

結果:

 COMPANY

BOKE

WM

解釋:截取源字符串,從(第一個'_'出現位置+1)開始,截取個數為:第2個'_'出現位置減去第1個'_'出現位置,此時還多了一個下劃線'_',再減去1即可得到代表公司字符串。

獲取姓名:

?
1
SELECT SUBSTR (SOURCE_CODE, INSTR (SOURCE_CODE, '_', 1, 3) + 1) AS STF_NAMEFROM TABLE_CODE_TEST

結果:

 LY

LWZ

OYZY

解釋:截取源字符串,從('_'第3次出現位置+1)開始截取,截取到末尾。
---------------------

總結

以上所述是小編給大家介紹的Oracle中字符串截取常用方法總結,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://www.cnblogs.com/moyijian/archive/2018/10/31/9882988.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国语自产自拍秒拍在线视频 | 欧美激情精品久久久久久不卡 | 色呦呦网 | 亚洲欧美另类在线观看 | 亚洲香蕉综合在人在线视看 | 娇妻被又大又粗又长又硬好爽 | 被强上后我成瘾了小说 | 精品国产自在在线在线观看 | 小伙无套内射老女人 | brazzers欧美教师 | 美女脱了内裤让男生尿囗 | 日本女人www | 成人久久18免费网站 | 久久精品麻豆国产天美传媒果冻 | 九九精品视频在线观看九九 | 国产一区二区精品 | 四虎国产精品免费久久麻豆 | 免费看a视频 | 91精品国产综合久久精品 | 久久这里只精品热在线18 | 精品一区heyzo在线播放 | 日韩毛片免费在线观看 | 精品无码国产污污污免费网站2 | 欧美视频一 | 日本高清在线观看天码888 | 女人和拘做受全过程免费 | 国产天天在线 | 青青青青青国产免费手机看视频 | 免费大片a一级一级 | 99精品国产高清自在线看超 | 国产成人精品一区二区阿娇陈冠希 | 国产一区二区在线免费观看 | 外国xxx | 啊啊啊好大在线观看 | 欧美女孩13一14v | 国产aaa毛片| 秀婷程仪公欲息肉婷在线观看 | 黑人巨摘花第一次出血 | 国产精品反差婊在线观看 | 成熟女人50岁一级毛片不卡 | 欧美精品一区视频 |