看板 Database 關於我們 聯絡資訊
資料庫名稱:MySQL 資料庫版本:5.7 內容/問題描述: 小弟有張表是以某個id字串作為索引 id字串可能由英文、中文、數字、跟常見符號的'-' '.'組成 最常做的就是查詢屬於某個id的所有資料筆數 今天突然發現某個id,假設為'abc-T-4.11-moen' 明明就有出現在資料表裡 用select * from table where id = 'abc-T-4.11-moen'查詢 結果為null 但改成where like '%abc-T-4.11-moen'查詢,就有資料了 而且id那欄就是'abc-T-4.11-moen',開頭沒有多別的字元 為什麼用where id =會找不到呢? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.12.209.184 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1580921996.A.AC9.html ※ 編輯: espeondoug (140.109.73.31 臺灣), 02/06/2020 10:10:56
kyrc: 猜包含中文出錯 https://www.itread01.com/p/1343518.html 02/06 10:33
mathrew: 你用 like 找到那筆資料後,把他複製出來看是長怎樣 02/07 07:43
konkonchou: 通常是隱藏了特殊符號,可以用char_length 查一下長度 02/07 09:41
espeondoug: 有問題的id名稱沒有中文,複製出來看也沒有發現特殊符 02/07 10:09
espeondoug: 號,字串長度跟用肉眼數的一樣 02/07 10:10
espeondoug: 另外有測試用like找出來的資料獨立建表,再用=查詢就 02/07 10:11
espeondoug: 成功了,目前有在想如果把資料撈出來再insert回去是不 02/07 10:12
espeondoug: 是就可以 02/07 10:13
mered: 直接複製like出來的欄位資料,再原封不動的貼上沒有like的 02/16 10:55
mered: 查詢試試看 02/16 10:55
sleepghost: 同一樓想法 不要相信你肉眼看到的 02/21 16:43
sleepghost: 透過編碼去測試資料 才是真的 02/21 16:44
sleepghost: Nchar 或 Nvarchar 皆為unicode每一個字元為兩個bytes 02/21 16:44
sleepghost: MSSQL預設為UTF8 因此型態為varchar 或 char 02/21 16:45
sleepghost: MySQL就不確定是不是一樣 02/21 16:45
cracydancer: 用 len 函數就能知道db 裡有沒有包含其他字元 02/27 22:59
cracydancer: 更正,mysql 應是 length 02/27 23:00
espeondoug: 有嘗試了複製欄位資料再貼回指令,也用char_length() 03/02 14:45
espeondoug: 跟length()計算字串長度,但前者一樣不行,後者的長 03/02 14:45
espeondoug: 度數字跟自己數的一樣(沒有中文),因為有問題的id只 03/02 14:45
espeondoug: 有這個,而且用like撈得出來,目前已經先作罷了XD 03/02 14:45
espeondoug: 感謝樓上大大們熱心回覆 03/02 14:45