我已經創建了下面這個函數在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._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$' then
set v_error=110;
end if;
return v_error;
end$$
DELIMITER ;
如果我在本地(確定性/不確定性的條款)運行它,它返回零(有效的電子郵件)的以下聲明:
select fn_header_uploader_address('[email protected]');
但將功能移到新服務器,這變得區分大小寫! 所以現在
select fn_header_uploader_address('[email protected]'); ---- error 110
請幫忙嗎?
編輯:
show collation where collation like '%_c%' ;
show variables like '%version%';
可以使用' UPPER(v_add)NOT REGEXP'^ [A- ...'強制案例;嘗試用'SHOW CHARACTER SET'檢查排序規則。 – harvey 2014-11-06 05:37:25
感謝您的回覆哈維。我可以使用upper(v_add),但我是mysql新手。所以,我想了解爲什麼我在2臺不同的服務器上獲得不同的結果。 – Tammy 2014-11-06 07:52:02
感謝哈維,儘管你的答案解決了我的問題,但我無法將其標記爲答案。 – Tammy 2014-12-10 07:30:58