我已经创建了mysql函数,如下所示
DELIMITER $$
DROP FUNCTION IF EXISTS `GetProductIDFunc`$$
CREATE FUNCTION `GetProductIDFunc`( countryid INT (10) )
RETURNS VARCHAR(200)
BEGIN
declare out_id VARCHAR;
select country_percentage INTO out_id from country_markup where estatus = '1' AND `country_id` REGEXP '[[:<:]]countryid [[:>:]]' limit 1;
RETURN out_id;
END$$
DELIMITER ;
我已经调用了这个函数,如下所示 SELECT GetProductIDFunc(223) 但它给了我NULL值而不是7,这是我的预期结果值。 检查上面的结果数据[link] http://sqlfiddle.com/#!2/6aa92
注意:如果我用'[[:<:]]countryid [[:>:]]'
之类的静态值替换'[[:<:]]223 [[:>:]]'
而不是函数返回期望结果。
帮助将不胜感激。
答案 0 :(得分:2)
MySQL不会替换字符串中的变量值。您可以使用concat
形成正则表达式,例如:
select country_percentage INTO out_id from country_markup
where estatus = '1' AND `country_id` REGEXP concat('[[:<:]]',countryid,'[[:>:]]')
limit 1;