mysql調用存儲過程出現Illegal mix of collations錯誤


執行sql語句正常

執行存儲過程 異常

提示

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='

解決辦法

CREATE PROCEDURE `proce_test`(admin_name VARCHAR(32) charset utf8)

 

 

 

 問題描述:MySQL進行字符串比較時發生錯誤:


 
SELECT  
    a.equ_no,  
    b.fullCode  
FROM  
    equipment a,  
    (  
        SELECT  
            t.*, getEquTypeFullCode (t.equType_id) AS fullCode  
        FROM  
            equ_type t  
    ) b  
WHERE  
    substring(a.equ_no, 1, 5) = b.fullCode  

 

錯誤如下:

 

 

[Err] 1267 - Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='  

 


解決方法:將比較等式一邊進行字符串轉換,如改為“CONVERT(b.fullCode USING utf8) COLLATE utf8_unicode_ci

 

SELECT  
    a.equ_no,  
    b.fullCode  
FROM  
    equipment a,  
    (  
        SELECT  
            t.*, getEquTypeFullCode (t.equType_id) AS fullCode  
        FROM  
            equ_type t  
    ) b  
WHERE  
    substring(a.equ_no, 1, 5) = CONVERT(b.fullCode USING utf8) COLLATE utf8_unicode_ci;  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM