我如何一起使用REGEXP + mysql +程序

时间:2016-01-27 15:45:27

标签: php mysql

我正在创建按ID查找类别的功能。由于类别值存储在mysql数据库中,使用php serialize和编码的json结果如下所示:

"a:2:{i:0;s:1:\"1\";i:1;s:2:\"50\";}"

我可以使用简单的mysql语句,并且可以正常使用REGEXP:

SELECT * FROM provider_cat_subcat WHERE category_id REGEXP '\\"\50.\\"'

但我想创建程序,所以我可以放置变量值。所以当我尝试这个时:

WHERE provider_cat_subcat.category_id REGEXP '\\"' + cat_id + '.\"'

它不起作用我认为因为REGEXP。请帮助我知道如何使用REGEXP加入变量,或者为什么我可以使用php。

完整程序:

BEGIN 
   SELECT * FROM provider_cat_subcat 
   WHERE provider_cat_subcat.category_id REGEXP '\\"' + cat_id + '.\"'
   AND provider_cat_subcat.subcategory_id REGEXP '\\"' + subcat_id + '.\"'; 
END

由于

2 个答案:

答案 0 :(得分:1)

你可以试试吗?

DELIMITER $$
CREATE PROCEDURE cat_regexp_search(IN cat_id int(11), IN sub_cat_id int(11))
BEGIN
  SET @cat_id    := cat_id;
  SET @sub_cat_id := sub_cat_id;
   SELECT * FROM provider_cat_subcat 
   WHERE provider_cat_subcat.category_id REGEXP CONCAT('\\"', @cat_id, '.\\"')
   AND provider_cat_subcat.subcategory_id REGEXP CONCAT('\\"', @sub_cat_id, '.\\"'); 
END
$$
DELIMITER ;

您应该将此脚本称为CALL cat_regexp_search(1, 3); 您何时想要编辑,然后调用

DROP PROCEDURE IF EXISTS cat_regexp_search;

然后再次执行create script。

答案 1 :(得分:0)

BEGIN 
SELECT * FROM provider_cat_subcat 
   WHERE provider_cat_subcat.category_id REGEXP '^1[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{4}$';
AND provider_cat_subcat.subcategory_id REGEXP '^1[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{3}[() -]*[[:digit:]]{4}$';
END

尝试不带斜线