[SQL ] where =搜尋不到但where like可以

看板Database (資料庫)作者 (殘雪)時間4年前 (2020/02/06 00:59), 4年前編輯推噓3(3019)
留言22則, 7人參與, 4年前最新討論串1/1
資料庫名稱: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

02/06 10:33, 4年前 , 1F
02/06 10:33, 1F

02/07 07:43, 4年前 , 2F
你用 like 找到那筆資料後,把他複製出來看是長怎樣
02/07 07:43, 2F

02/07 09:41, 4年前 , 3F
通常是隱藏了特殊符號,可以用char_length 查一下長度
02/07 09:41, 3F

02/07 10:09, 4年前 , 4F
有問題的id名稱沒有中文,複製出來看也沒有發現特殊符
02/07 10:09, 4F

02/07 10:10, 4年前 , 5F
號,字串長度跟用肉眼數的一樣
02/07 10:10, 5F

02/07 10:11, 4年前 , 6F
另外有測試用like找出來的資料獨立建表,再用=查詢就
02/07 10:11, 6F

02/07 10:12, 4年前 , 7F
成功了,目前有在想如果把資料撈出來再insert回去是不
02/07 10:12, 7F

02/07 10:13, 4年前 , 8F
是就可以
02/07 10:13, 8F

02/16 10:55, 4年前 , 9F
直接複製like出來的欄位資料,再原封不動的貼上沒有like的
02/16 10:55, 9F

02/16 10:55, 4年前 , 10F
查詢試試看
02/16 10:55, 10F

02/21 16:43, 4年前 , 11F
同一樓想法 不要相信你肉眼看到的
02/21 16:43, 11F

02/21 16:44, 4年前 , 12F
透過編碼去測試資料 才是真的
02/21 16:44, 12F

02/21 16:44, 4年前 , 13F
Nchar 或 Nvarchar 皆為unicode每一個字元為兩個bytes
02/21 16:44, 13F

02/21 16:45, 4年前 , 14F
MSSQL預設為UTF8 因此型態為varchar 或 char
02/21 16:45, 14F

02/21 16:45, 4年前 , 15F
MySQL就不確定是不是一樣
02/21 16:45, 15F

02/27 22:59, 4年前 , 16F
用 len 函數就能知道db 裡有沒有包含其他字元
02/27 22:59, 16F

02/27 23:00, 4年前 , 17F
更正,mysql 應是 length
02/27 23:00, 17F

03/02 14:45, 4年前 , 18F
有嘗試了複製欄位資料再貼回指令,也用char_length()
03/02 14:45, 18F

03/02 14:45, 4年前 , 19F
跟length()計算字串長度,但前者一樣不行,後者的長
03/02 14:45, 19F

03/02 14:45, 4年前 , 20F
度數字跟自己數的一樣(沒有中文),因為有問題的id只
03/02 14:45, 20F

03/02 14:45, 4年前 , 21F
有這個,而且用like撈得出來,目前已經先作罷了XD
03/02 14:45, 21F

03/02 14:45, 4年前 , 22F
感謝樓上大大們熱心回覆
03/02 14:45, 22F
文章代碼(AID): #1UElICh9 (Database)
文章代碼(AID): #1UElICh9 (Database)