mysql擷取字元

2021-10-07 01:47:46 字數 4227 閱讀 5207

前言:整理圖書資料,由於圖書資料之前沒有經過人工矯正爬取完成後直接匯入資料庫而且資料來源很多,無奈只好整理資料。

錯誤資料展示:

小馬寶莉2023年第2集(總第16集)【大師計畫】(4月刊)

李敖回憶錄(大師珍藏版)【噹噹全國獨家】

【正版全新直髮】宮澤賢治小森林童話:水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒出品 長江少年兒童出版社9787556078530

正常應顯示資料:

小馬寶莉

李敖回憶錄

宮澤賢治小森林童話:水仙月四日

其實說白了就是mysql擷取字元

下面是我的一些思路,歡迎大佬指定提出更優方案

先看下這個substr(); 其實給的提示很明顯 str 就是string字元唄varchar型別

pos就是postion唄int型別,下面挨個試一下

;【正版全新直髮】宮澤賢治小森林童話:水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒出品 長江少年兒童出版社9787556078530

字串擷取這個函式很多語言都有,但細節有偏差。mysql這個是以1為起始值

select substr(book_nm,1)

from ma_book

where id =

1788925

;【正版全新直髮】宮澤賢治小森林童話:水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒出品 長江少年兒童出版社9787556078530

select substr(book_nm,instr(book_nm,

'】')+1

)from ma_book

where id =

1788925

;宮澤賢治小森林童話:水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒出品 長江少年兒童出版社9787556078530

2.substr( str:varchar from pos:int )

這個沒什麼說的和上面的用法一樣只是逗號換成了from

select substr(book_nm from instr(book_nm,

'】')+1

)from ma_book

where id =

1788925

;宮澤賢治小森林童話:水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒出品 長江少年兒童出版社9787556078530

3.substr( str:varchar , pos:int , len:int)

len就是length長度唄,指的是擷取的長度

select substr(book_nm , instr(book_nm,

'】')+1

,10)from ma_book

where id =

1788925

;從第九個開始擷取十個

宮澤賢治小森林童話:

4.substr( str:varchar from pos:int for len:int )

同理只是換了種寫法

select substr(book_nm from instr(book_nm,

'】')+1

for10

)from ma_book

where id =

1788925

;宮澤賢治小森林童話:

字串擷取常用函式,和其他語言的字串擷取差不多沒什麼特殊之處

上個substr()的兄弟單位,如下圖4個方法一模一樣直接看第5個

delim 即分割符,新知識點,下面我試一下

#以分隔符】為例當count為0時結果集為0

select substring_index(book_nm ,

'】',0)

from ma_book

where id =

1788925

;#以分隔符】為例當count為1時結果集為分割符左邊所有字元

select substring_index(book_nm ,

'】',1)

from ma_book

where id =

1788925

;【正版全新直髮

#以分隔符】為例當count大於1時結果集為原值

select substring_index(book_nm ,

'】',2)

from ma_book

where id =

1788925

;【正版全新直髮】宮澤賢治小森林童話:水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒出品 長江少年兒童出版社9787556078530

#以分隔符】為例當count等於-1時結果集為分割符右邊所有字元

select substring_index(book_nm ,

'】',-1

)from ma_book

where id =

1788925

;宮澤賢治小森林童話:水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒出品 長江少年兒童出版社9787556078530

#以分隔符】為例當count小於-1時結果集為原值

select substring_index(book_nm ,

'】',-2

)from ma_book

where id =

1788925

;【正版全新直髮】宮澤賢治小森林童話:水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒出品 長江少年兒童出版社9787556078530

比兄弟單位substr()多了乙個

substring_index(str:varchar , delim:varchar , count:int)

trim(),可不僅僅只能去空格

去掉左右空格

2.trim( [remstr:varchar] from str:varchar)

去掉兩邊、左邊、右邊限定符

3.ltrim(str:varchar)

去掉左邊空格

4.rtrim(str:varchar)

去掉右邊空格

#1.去掉字串最左邊的限定符【正版全新直髮】

select trim(leading '【正版全新直髮】'

from book_nm )

from ma_book

where id =

1788925

;宮澤賢治小森林童話:水仙月四日 宮澤賢治,田誠 繪,彭懿 海豚傳媒出品 長江少年兒童出版社9787556078530

#2.去掉字串最右邊的限定符【正版全新直髮】

select trim(trailing'【正版全新直髮】'

from book_nm )

from ma_book

where id =

1788925

;#3.去掉字串兩邊的限定符【正版全新直髮】

select trim(both '【正版全新直髮】'

from book_nm )

from ma_book

where id =

1788925

;

trim( [remstr:varchar] from str:varchar),

是一大亮點,今天在去空格時偶然發現還有這個方法。

未完待續。。。

mysql擷取字串

一 mysql擷取字串函式 1 left str,length 從左邊擷取length 2 right str,length 從右邊擷取length 3 substring str,index 當index 0從左邊開始擷取直到結束 當index 0從右邊開始擷取直到結束 當index 0返回空 4...

mysql擷取字串

mysql 字串擷取函式 left right substring substring index 還有 mid substr 其中,mid substr 等價於 substring 函式,substring 的功能非常強大和靈活。1.字串擷取 left str,length mysql selec...

mysql擷取字串

擷取從左開始字串數 select left 4 name 擷取從右開始字串數 select right 3 name 擷取從字串第五位開始 直到結束 select substring 5 從字串的第 6 個字元位置開始取,只取 2 個字元。select substring 6,2 從字串的第 4 個...