標籤:開始 1.5 主鍵 相關 停止 ext 現在 font 各級
mysql根據字元截取字串(總結)
1.1 前言
為結合自己平常查資料的習慣,我會先給出例子,然後再對相關知識進行詳解。該案例使用到的函數為:SUBSTRING_INDEX
1.2 需要實現的實際需求
- 如下表為文檔目錄表,其中關鍵字段dir_seq為目錄層級索引,dir_name為目錄名稱。假設現在我們擷取到dir_seq值為 .341.346.347.348. ,現在我們想擷取到各層級的目錄主鍵。
1.3 截取一級目錄主鍵
步驟一:
先根據字元‘.‘從左邊開始第二個‘.‘開始截取左邊的字串:SUBSTRING_INDEX(dir_seq,‘.‘,2)
截取結果: .341
步驟二:
在步驟一的截取結果再根據字元‘.‘從右邊開始第一個‘.‘開始截取右邊的字串:SUBSTRING_INDEX( SUBSTRING_INDEX(dir_seq,‘.‘,2) ,‘.‘,-1)
截取結果: 341
1.3 截取二級目錄主鍵
步驟一: 先根據字元‘.‘從左邊開始第三個‘.‘開始截取左邊的字串:SUBSTRING_INDEX(dir_seq,‘.‘,3) 截取結果: .341.346步驟二: 在步驟一的截取結果再根據字元‘.‘從右邊開始第一個‘.‘開始截取右邊的字串:SUBSTRING_INDEX( SUBSTRING_INDEX(dir_seq,‘.‘,3) ,‘.‘,-1) 截取結果: 346
1.4 截取三級目錄主鍵,其實從上面兩個例子已經看出規律,先從左截取三級目錄id所在的位置,再從右截取第一個‘.‘的位置。。。
1.5 mysql相關字串截取的函數詳解:
- SUBSTRING_INDEX(subStr, matchStr, index)
根據匹配的字元以及出現的位置開始截取字串
subStr: 需要截取的欄位
matchStr: 匹配的字元
index: 從第幾個匹配的字元,為正數時從左邊開始尋找並向左截取,為負數時從右邊開始尋找並向右截取
- LEFT(subStr,index)
從左邊開始向右截取,截至第index位(index從1開始)
subStr: 需要截取的欄位
index: 停止截取的位置(包括該位置的字元)
RIGHT(subStr,index)
從右邊開始向左截取,截至從右邊開始數第index位(index從1開始)
subStr: 需要截取的欄位
index: 停止截取的位置(包括該位置的字元)
- SUBSTRING(subStr, index)
當index為負數時,從右邊開始向左截取,截至從右邊開始數第index位
當index為正數時,從左邊開始向右截取,截至從左邊開始數第index位
subStr: 需要截取的欄位
index: 停止截取的位置(包括該位置的字元)
mysql根據字元截取字串(總結)