鍍金池/ 問答/數(shù)據(jù)庫/ 為啥mysql字段的Character和表的Charset不一致,用此字段查詢就

為啥mysql字段的Character和表的Charset不一致,用此字段查詢就會(huì)報(bào)錯(cuò)呢??

  • 今天表里有中文數(shù)據(jù)要replace結(jié)果update xxx replace() where desc like '%xxx%'報(bào)錯(cuò)了。
  • 于是便打印下show create table xxxx (如下圖),desc 字段因?yàn)橐娣胖形?所以添加character utf8,但表本身charset latin1.(不是我建的)

圖片描述

  • 下圖為查詢的報(bào)錯(cuò),單單這個(gè)desc字段報(bào)錯(cuò),其余字段都是好好的,至于set names xxxx 都沒用

圖片描述

  • 不過我前臺(tái)插入數(shù)據(jù)沒問題,命令行不用desc作條件查詢也沒問題,請大佬賜教,為啥會(huì)出現(xiàn)這個(gè)問題?是不是character和charset不同導(dǎo)致的?那為何我web前臺(tái)操作沒問題呢?
回答
編輯回答
我以為

desc是mysql的關(guān)鍵字, 從終端做為字段名時(shí)輸入時(shí)需要用反引號(hào)括起來使用

如:

SELECT * FROM your_table where `desc`='中文';

或者

SELECT * FROM your_table as t where t.desc='中文';

與字符集無關(guān).

參見:
https://dev.mysql.com/doc/ref...

2017年2月8日 14:29