【发布时间】:2015-01-02 12:03:30
【问题描述】:
我在mysql中创建了以下函数:
DELIMITER $$
CREATE FUNCTION fn_header_uploader_address(v_add varchar(500)) RETURNS bigint(20)
begin
DECLARE v_error bigint default 0;
IF length(v_add) > 100 then
set v_error = 110;
elseif v_add is null or v_add ='' then
set v_error=110;
elseif v_add NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$' then
set v_error=110;
end if;
return v_error;
end$$
DELIMITER ;
如果我在本地(确定性/无确定性子句)上运行它,它会为以下语句返回零(有效电子邮件):
select fn_header_uploader_address('hello@gmail.com');
但是在将函数移动到新服务器时,这变得区分大小写! 所以现在
select fn_header_uploader_address('hello@gmail.com'); ---- error 110
有什么帮助吗?
编辑:
我已经使用以下命令比较了服务器:
show collation where collation like '%_c%' ;
show variables like '%version%';
【问题讨论】:
-
可以用
UPPER(v_add) NOT REGEXP '^[A- ...强制大小写吗?尝试使用SHOW CHARACTER SET检查排序规则。 -
感谢您的回复哈维。我可以使用upper(v_add),但我是mysql的新手。所以,我想了解为什么我在 2 个不同的服务器上得到不同的结果。
-
感谢 harvey,即使您的回答解决了我的问题,我也无法将其标记为已回答。
标签: mysql regex configuration collation case-sensitive