国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

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

2024-08-29 14:01:19
字體:
來源:轉載
供稿:網(wǎng)友

substr 函數(shù):截取字符串 

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

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

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

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

示例:

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  --從倒數(shù)第4個字符開始,截取到末尾。返回'SQL!'SELECT SUBSTR('Hello SQL!', 3, 6) FROM dual --從第3個字符開始,截取6個字符。返回'llo SQ'SELECT SUBSTR('Hello SQL!', -4, 3) FROM dual--從倒數(shù)第4個字符開始,截取3個字符。返回'SQL'

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

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

string:表示源字符串。

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

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

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

示例:

--表示從源字符串'city_company_staff'中第1個字符開始查找子字符串'_'第1次出現(xiàn)的位置SELECT INSTR('city_company_staff', '_') FROM dual --返回5--表示從源字符串'city_company_staff'中第5個字符開始查找子字符串'_'第1次出現(xiàn)的位置SELECT INSTR('city_company_staff', '_', 5) FROM dual  --返回5--表示從源字符串'city_company_staff'中第5個字符開始查找子字符串'_'第1次出現(xiàn)的位置SELECT INSTR('city_company_staff', '_', 5, 1) FROM dual  --返回5--表示從源字符串'city_company_staff'中第3個字符開始查找子字符串'_'第2次出現(xiàn)的位置SELECT INSTR('city_company_staff', '_', 3, 2) FROM dual  --返回13--start參數(shù)為-1,從右向左檢索,查找'_'字符串在源字符串中第1次出現(xiàn)的位置SELECT INSTR('city_company_staff', '_', -1, 1) FROM dual  --返回13--start參數(shù)為-6,從右向左檢索,查找'_'字符串在源字符串中第2次出現(xiàn)的位置SELECT INSTR('city_company_staff', '_', -6, 2) FROM dual  --返回5 substr 函數(shù)結合 instr 函數(shù)截取字符串

現(xiàn)有需求:數(shù)據(jù)查詢處理需要對code進行"拆分"

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

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

表數(shù)據(jù)如下:

SOURCE_CODE   BJ_BAIDU_CEO_LY   SH_BOKE_MANAGER_LWX   HRB_WM_CASHIER_OYZY

  獲取城市:

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

結果:

 BJ

SH

HRB

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

那為什么減1呢?

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

獲取公司:

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

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

獲取姓名:

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

結果:

 LY

LWZ

OYZY

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

總結

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


注:相關教程知識閱讀請移步到oracle教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 松阳县| 琼中| 静宁县| 石河子市| 迭部县| 通道| 景泰县| 周宁县| 防城港市| 石棉县| 当雄县| 呈贡县| 南康市| 扎兰屯市| 疏附县| 汽车| 鹿邑县| 循化| 惠州市| 棋牌| 建德市| 汉川市| 紫金县| 甘德县| 石嘴山市| 博客| 信宜市| 安庆市| 葵青区| 镇江市| 夏津县| 五家渠市| 阳江市| 乌恰县| 法库县| 常宁市| 洛南县| 马山县| 当雄县| 丰县| 镇宁|