2017-07-28 87 views
1

我有一个表MY_TBL与varchar字段MY_FLD。我需要找到MY_FLD包含一个数字后跟一个数字(后跟一个数字(通常是一个范围))的行。Mysql REGEX发生和字符串中的提取

以下各行应选择:

fffff 1-5 fdsfdsfds 
1-5 fdsfdsfds 
aaaa 10-23 
1-50 fdsfdsfds 

并且这些不应:

-5 dsgdgf 
10- rere 
-15 
10 -23 
10- 23 

对数连字符数图案的正则表达式是\d+\-\d+

如何在MySql语句中使用它?是否有可能将模式提取到单独的字符串中?

fffff 1-5 fdsfdsfds -> 1-5 
1-5 fdsfdsfds -> 1-5 
aaaa 10-23 -> 10-23 
1-50 fdsfdsfds -> 1-50 
+0

您将需要返回整行,然后在PHP中使用正则表达式提取值。这里是一个线程解压与MySQL,https://stackoverflow.com/questions/4021507/mysql-use-regex-to-extract-string-select-regex,其中一个答案有一个工具,你可以安装 – chris85

回答

3

你可以使用这个检索匹配行:

SELECT * FROM MY_TBL WHERE MY_FLD REGEXP '[0-9]+-[0-9]+' 

无需逃避-而为了配合数字,用[0-9]括号表达式。

虽然没有简单的内置方法来提取MySQL中的正则表达式匹配。