數據庫中查詢報錯:Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=';
Illegal mix of collations 處理方法
查看:提供以下三種
show variables like '%char%';
show table status from datebase like '%tb%';
show full colums form tablename;
修改:
如果用戶想改變表的默認字符集和所有的字符列的字符集到一個新的字符集,使用下面的語句:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
警告:
上述操作是在字符集中轉換列值。如果用戶在字符集(如 gb2312)中有一個列,但存儲的值使用的是其它的一些不兼容的字符集(如 utf8),那麼該操作將不會得到用戶期望的結果。在這種情況下,用戶必須對每一列做如下操作:
ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;
這樣做的原因是:從 BLOB 列轉換或轉換到 BLOB 列沒有轉換髮生。
如果用戶指定以二進制進行 CONVERT TO CHARACTER SET,則 CHAR、VARCHAR 和 TEXT 列將轉換爲它們對應的二進制字符串類型(BINARY,VARBINARY,BLOB)。這意味着這些列將不再有字符集,隨後的 CONVERT TO 操作也將不會作用到它們上。
如果僅僅改變一個表的缺省字符集,可使用下面的語句:
ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;
DEFAULT是可選的。當向一個表裏添加一個新的列時,如果沒有指定字符集,則就採用缺省的字符集(例如當ALTER TABLE ... ADD column)。
ALTER TABLE ... DEFAULT CHARACTER SET 和 ALTER TABLE ... CHARACTER SET 是等價的,修改的僅僅是缺省的表字符集。
1.修改MySQL的數據庫的字符集
2.修改MySQL的表的字符集
3.修改MySQL的字段的字符集
UPDATE tbl_a a , tbl_b b SET a.Id= b.id WHERE CONVERT(a.email USING utf8) COLLATE utf8_unicode_ci = b.email
mysql concat亂碼問題解決
concat(str1,str2)
當concat結果集出現亂碼時,大都是由於連接的字段類型不同導致,如concat中的字段參數一個是varchar類型,一個是int類型或doule類型,就會出現亂碼。
利用mysql的字符串轉換函數CONVERT將參數格式化爲char類型就可以了。