MySQL和regexp - 作为SELECT列返回,只有表的列的regexp匹配部分

时间:2015-03-31 09:25:23

标签: mysql regex

我知道有一种简单的方法可以在MySQL中提供与正则表达式匹配的WHERE条件,但我的问题是不同的。专栏是这样的:

jknewfjnkewnjkfewnjfwe1jnkf2jnw wefwef 1234567.12345678 qwrqwerqwrq
jnewdnkewjk ewnfewf1 wefwefew2 1234568.22314152 qwrqwrqwr qw
whjefjwefwe1 wefwefwef2 qweqwrqrw 1234369.21213131 qwdqwdqwd

我想获得一个SELECT列SUBSTRING短语,它为我返回:

selectcol1  selectcol2
1234567     12345678
1234568     22314152
1234369     21213131

我所知道的:第一个匹配的数字是7位数,第二个匹配的数字总是8个数字,之前和之后的部分肯定不会匹配正好7位数的模式。

有没有办法获得这些SELECT列?

1 个答案:

答案 0 :(得分:0)

简答:不。答案很长......

REGEXP '[[:<:]][0-9]{7}[[:>:]].*[[:<:]][0-9]{8}[[:>:]]'

将匹配第一个&#39;&#39; 7位数跟随(最终)一个&#39;字&#39;有8位数。

示范(1 =真):

mysql> SELECT 'jnewdnkewjk ewnfewf1 wefwefew2 1234568.22314152 qwrqwrqwr qw'
    ->        REGEXP '[[:<:]][0-9]{7}[[:>:]].*[[:<:]][0-9]{8}[[:>:]]' AS test;
+------+
| test |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

请记住,SQL不是提取这些字段的好语言。事实上,我会说你应该使用PHP(或其他语言)来提取 MySQL定位后的字段并获取。< / p>

也就是说,没有LOCATE()正则表达式。