2017-07-31 15 views
0

需要幫助,因爲我很難設置查詢更新。MYSQL用char的條件替換字符串的一部分是數字

我想將10x的出現次數替換爲20x,其中x必須是數字數字。此外,數字號碼可以出現在任何位置。和數字出現的前兩個數字位必須是10

如:tableA - 在現場colA有如下:查詢更新後

TOK101s 
102YUZ 
TAIP103v 
ECC10 
ECC10a 
SCC_103 
TD-102b 
ZA1104z 

的結果應該是:

TOK201s 
202YUZ 
TAIP203v 
ECC10 
ECC10a 
SCC_203 
TD-202b 
ZA1104z 

ECC10ECC10a不應該更新,因爲10之後的第3個字符不是數字值。

ZA1104z不應更新,因爲數字字符串1104不以10開頭。

+0

這是一個正則表達式的工作。不幸的是,MySQL沒有內置的正則表達式替換函數,但是您可以搜索一個可以執行它的UDF。 – Barmar

+0

我可以做一個正常的替換(colA,'10','20'),但用正則表達式過濾嗎?這是可行的嗎?例如:update tableA set colA = replace(colA,'10','20')colA REGEXP'something'? –

+0

您可以使用'WHERE colA REGEXP'(^ | [^ 0-9])10 [0-9]''進行過濾以匹配以「10」開頭的3個數字。但是如果字符串看起來像「ECC101ABC10」呢?這將取代'10'子串。 – Barmar

回答