[英]How i can use REGEXP+mysql+procedure together
I am creating function to find category by id. 我正在创建功能以按ID查找类别。 Because of categories values are stored in mysql database with php serialize and encoded json result looks like this : 由于类别的原因,值通过php序列化存储在mysql数据库中,编码后的json结果如下所示:
"a:2:{i:0;s:1:\"1\";i:1;s:2:\"50\";}"
I can use simple mysql statement and that's working fine with REGEXP : 我可以使用简单的mysql语句,并且可以与REGEXP正常工作:
SELECT * FROM provider_cat_subcat WHERE category_id REGEXP '\\"\50.\\"'
But i want to create procedure so i can put variable value. 但是我想创建过程,以便我可以放置变量值。 So when i am trying this : 所以当我尝试这个时:
WHERE provider_cat_subcat.category_id REGEXP '\\"' + cat_id + '.\"'
it's not working i think because REGEXP. 我认为这是行不通的,因为REGEXP。 Please help me to know how i can join variable with REGEXP or there's why i can use php. 请帮助我了解如何使用REGEXP联接变量,或者为什么可以使用php。
Full procedure: 完整程序:
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
Thanks 谢谢
Could you try that please ? 你能尝试一下吗?
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 ;
You should call this script as CALL cat_regexp_search(1, 3);
您应该将此脚本称为CALL cat_regexp_search(1, 3);
When do you want to edit then call as 您何时要编辑,然后致电
DROP PROCEDURE IF EXISTS cat_regexp_search;
then execute create script again. 然后再次执行创建脚本。
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
try without slash 尝试不加斜线
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.