我根据两列搜索特定行的数据库表(mysql)。第一列包含一组用逗号分隔的数字。 例如
第1行:1,5,23,19
第2行:10
第3行:29,15,30
第二列只包含一个数字 例如
第1行:2
第2行:23
第3行:2
用户为我提供了这两列的具体数字
e.g。
$ column1:1
$ column2:2
如果我使用以下命令
$sql = "SELECT field 1, field2... from table a WHERE (a.first_column LIKE '%".$column1."%') AND (a.second_column = ".$column2.")";
要搜索此示例,它同时给出第1行和第3行,这是不正确的。
row 1: 1,5,23,19 //This is right
row 3: 29,15,30 // This is wrong
我知道它匹配包含" 1"的所有行。但是,在此示例中,结果应为 仅第1行。
使用
$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"。
$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的新手,并且不知道正则表达式。我以前从没用过它。我花了很多时间寻找解决方案。我哪里错了?有没有更好/更正确的方法呢?
提前感谢您的帮助