我知道有一种简单的方法可以在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列?
答案 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()
正则表达式。