我正在创建按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
由于
答案 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
尝试不带斜线