MySQL字串規則提取

2021-10-08 21:21:28 字數 2217 閱讀 4809

delimiter $$

drop

function

ifexists

`data_extract`$$

create

function

`data_extract`

(aimstring varchar

(100

)charset utf8, flag int

)returns

varchar(50

)charset utf8

begin

declare len int

default0;

declare tmp varchar

(100

)default'';

set len=char_length(aimstring)

;if flag =

0then

while len >0do

-- 使用mid對字串從後往前擷取,對每個元素進行正則匹配

-- regexp'[0-9]' 匹配數字

ifmid

(aimstring ,len,1)

regexp

'[0-9]'

then

set tmp=concat(tmp,

mid(aimstring ,len,1)

);endif

;set len = len -1;

endwhile

;elseif flag=

1then

while len >0do

-- 使用mid對字串從後往前擷取,對每個元素進行正則匹配

-- regexp '[a-za-z]') 匹配字母if(

mid(aimstring,len,1)

regexp

'[a-za-z]'

)then

set tmp=concat(tmp,

mid(aimstring,len,1)

);endif

;set len = len -1;

endwhile

;elseif flag=

2then

while len >0do

-- 使用mid對字串從後往前擷取,對每個元素進行正則匹配

-- 匹配數字+字母if(

(mid

(aimstring,len,1)

regexp

'[0-9]')or

(mid

(aimstring,len,1)

regexp

'[a-za-z]'))

then

set tmp=concat(tmp,

mid(aimstring,len,1)

);endif

;set len = len -1;

endwhile

;elseif flag=

3then

while len >0do

-- 使用mid對字串從後往前擷取,對每個元素進行正則匹配

-- [u0391-uffe5] :中文之外的字元,正則匹配不在這範圍內的則為中文

ifnot

(mid

(aimstring,len,1)

regexp

'^[u0391-uffe5]'

)then

set tmp=concat(tmp,

mid(aimstring,len,1)

);endif

;set len = len -1;

endwhile

;else

set tmp =

'error: the second paramter should be in (0,1,2,3)'

;return tmp;

endif

;return reverse(tmp)

;end$$

delimiter

;

mysql查詢呼叫:

select num_char_extract(欄位名,1) from table;

num_char_extract(欄位名,1)

(1) 第二個引數為0:代表提取數字

(2) 第二個引數為1:代表提取字母

(3) 第二個引數為2:代表提取數字+字母

(4) 第二個引數為3:代表提取漢字

(5) 第二個引數為其他數字:列印錯誤提示

字串提取

請從字串中提取以最後乙個 img 開頭 以最後乙個 img 結尾的字串,未找到匹配的字串返回 null 可能包含 img img 的字串擷取後的字串bbb img ccc img ddd img eee img img ddd img eee img abcnull先找出最後乙個 img 的 所在下...

字串提取

比如乙個字串 110,hello,119,world,120,computer 我想提取第3個逗號 之後 第4個逗號 之前 的那一段,即 world 如何用 實現 如下 define uart recv field lenth 512 define uint16 unsigned short uin...

strtok分割字串提取

char strtok char s,const char delim 分解字串為一組字串。s為要分解的字串,delim為分隔符字元 如果傳入字串,則傳入的字串中每個字元均為分割符 首次呼叫時,s指向要分解的字串,之後再次呼叫要把s設成null。strtok函式會破壞被分解字串的完整,呼叫前和呼叫後...