使用正则表达式在mysql中搜索特定数字

时间:2016-03-07 13:20:48

标签: php mysql regex

我根据两列搜索特定行的数据库表(mysql)。第一列包含一组用逗号分隔的数字。 例如

第一栏

第1行:1,5,23,19

第2行:10

第3行:29,15,30

第二列只包含一个数字 例如

第二栏

第1行:2

第2行:23

第3行:2

用户为我提供了这两列的具体数字

e.g。

输入

$ column1:1

$ column2:2

如果我使用以下命令

命令1

$sql = "SELECT field 1, field2... from table a WHERE (a.first_column LIKE '%".$column1."%') AND (a.second_column = ".$column2.")";

要搜索此示例,它同时给出第1行和第3行,这是不正确的。

输出1

第一栏

row 1: 1,5,23,19 //This is right
row 3: 29,15,30 // This is wrong

我知道它匹配包含" 1"的所有行。但是,在此示例中,结果应为 仅第1行

使用

命令2

$sql = "SELECT field 1, field2... from table a WHERE (a.first_column = ".$column1.") AND (a.second_column = ".$column2.")";

给出空结果。

我尝试在mysql文档(https://dev.mysql.com/doc/refman/5.5/en/regexp.html)的帮助下使用正则表达式。我试图匹配行,其中$ column1变量前面或后跟任何其他数字。这样,只有" 1"将匹配,而不是" 15"。

命令3

$sql = "SELECT field 1, field2... from table a WHERE (a.first_column REGEXP '/^(?<![1-9][0-9])".$column1."*(?![1-9][0-9])$/') AND (a.second_column = ".$column2.")";

但是,它给出了错误。 sql命令受限于

$sql = "SELECT field 1, field2... from table a WHERE (a.first_column REGEXP '/^(?<";

并且在此之后不考虑命令。

我是php / mysql的新手,并且不知道正则表达式。我以前从没用过它。我花了很多时间寻找解决方案。我哪里错了?有没有更好/更正确的方法呢?

提前感谢您的帮助

0 个答案:

没有答案