0

我创建了如下的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 这是我的预期结果值。在此处检查示例数据以获取上述结果 [​​链接] http://sqlfiddle.com/#!2/6aa92

注意:如果我'[[:<:]]countryid [[:>:]]'用静态值替换,比如'[[:<:]]223 [[:>:]]'函数返回期望结果。帮助将不胜感激。

4

1 回答 1

2

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

select country_percentage INTO out_id from country_markup 
where estatus = '1' AND `country_id` REGEXP concat('[[:<:]]',countryid,'[[:>:]]')
limit 1;
于 2013-05-31T14:27:40.093 回答