2015-07-21 267 views
0

不像PHP,我不相信MySQL有任何preg_replace()功能,只能通過REGEXP匹配。下面是我在代碼中的字符串:mySQL替換字符串+附加字符串與靜態值

http://ourcompany.com/theapplestore/... 
http://ourcompany.com/anotherstore/... 
http://ourcompany.com/yetanotherstore/... 

正如你所看到的,存在有一個常數,http://ourcompany.com/,但也有一個變量字符串即theapplestoreanotherstore,等等,等等

我想要替換字符串常量,加上變量字符串(一個或多個),然後將變量字符串(一個或多個)之後的尾部斜槓(/),具有單個短碼值,即{{store url=''}}

EDIT 如果有幫助,店內碼總是相同的長度,它們將是 sch131785 sch185399 sch634019 等 即,它們的長度都是9個字符

我會怎麼做呢?謝謝。

+0

是URL中的全列的內容還是有更多的呢? – chris85

+0

TAYQ,不止這些(這是一個'TEXT'字段)。而且這種模式不止有一個例子。 –

+0

在這種情況下,我看不到一個簡單的方法在mysql中執行它; 'replace'函數中沒有通配符。我會把整個列放到PHP中,運行'preg_replace',然後通過'update'發回。還有一些人已經使用過的插件。 http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql(「蠻力法」最後也是一個有趣的想法) – chris85

回答

-1

您可以使用下面的正則表達式,

(ourcompany.com\/\w+\/) 

Demo

用途的Group Capture

+0

我很欣賞你的努力,但這更多的是使用MYSQL替換字符串,而不是識別它。我使用了各種MYSQL表達式來替換和計算字符串,但沒有這樣做。 –

0

MariaDB的-10.0.5有REGEXP_REPLACE(),REGEXP_INSTR()和REGEXP_SUBSTR()