天天看點

MySQL 中文查詢條件傳回結果為空 查詢結果為空

問題:

最近在做一個APP,APP要通過jdbc直接調用SQL通路MySQL的資料庫,其他問題先不說,遇到一個奇怪的現象,同樣一條SQL語句,用Navicat去執行的時候,就可以查出來資料庫記錄資料,但是放在代碼裡,這條SQL語句就查不出來資料,顯示查詢結果是null,啊喲,神奇了,

排查bug經過:

1.項目中為了效率使用了hutool作為資料庫連接配接池,難道是這個第三方庫有bug,不可能啊,這種大型的已經使用這麼長久的庫怎麼會出現這種低端問題,但是還是更新到了最新版本,沒卵用,不是這裡的問題。

2.難道是SQL的問題?這條SQL有内查詢,把SQL拆分一下,有趣的是,拆分以後還是沒卵用,還不是這裡的問題,

真是讓人頭秃,不知道哪裡的問題了,沒有思路了。。。。。。。雖然預感是個小問題,就差臨門一腳了,就是不知道是哪裡的原因。。。。。太讓人頭秃了。。。。。

3,最後,把字段的值拼接進了SQL,放在代碼裡執行,還是查詢結果為空,。。。。。發呆。。。。。。。

看了好半天,這條SQL語句裡有漢字啊,查詢條件有漢字,,查詢條件有漢字,,查詢條件有漢字,,查詢條件有漢字,重要事情說三遍,難道是漢字導緻的,畢竟MySQL不是國人産物,百度一下,還真有這種坑。。。。。

Mysql查詢資料時當查詢條件為中文查詢結果為空的解決辦法:

修改url如下:

Url=”jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8”
           

參考 : https://blog.csdn.net/mr123666/article/details/104253847

我去了,确實就是這裡的問題,不管是原生查詢,還是使用了連接配接池,牽扯到中文的時候,連接配接URL需要給加utf-8的說明。

解決辦法:

連接配接MySQL資料庫,去做資料查詢時候,當查詢條件是中文,也就是當輸入MySQL的語句有中文的時候,要在建立到MySQL資料庫的連接配接上顯示的加上utf-8,否則MySQL不認識你輸入進來的這一條SQL語句,肯定會給你說你的查詢結果啥也查不到,就給你null了。

這裡記錄一下,踩坑2天,教訓。。。。。。