2015-07-21 132 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()