MySql函数没有给出正确的结果

时间:2013-05-31 14:20:09

标签: mysql

我已经创建了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 [[:>:]]'而不是函数返回期望结果。 帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

MySQL不会替换字符串中的变量值。您可以使用concat形成正则表达式,例如:

select country_percentage INTO out_id from country_markup 
where estatus = '1' AND `country_id` REGEXP concat('[[:<:]]',countryid,'[[:>:]]')
limit 1;