今天在一個系統上除錯, 發現用以下 SQL 指令找不到資料:
|
1 |
select * from `table_name` where `name` like 'ABC' |
要用以下 SQL 指令才可以找到:
|
1 |
select * from `table_name` where `name` like '%ABC%' |
用 phpMyAdmin 檢查那些資料好像沒問題, 再細心找才發現有些資料的欄位結尾有 “\n” 或 “\r”, 出現這個問題的原因大欄是在插入資料時沒有刪除掉 “\n” 這類字元, 插入的部份很容易解決, 再來要將原有的資料內的 “\n” 及 “\r” 刪除。
在處理前先將資料表備份, 然後可以用以下 SQL 指令將所有 “\n” 及 “\r” 空白字元刪除, 以下例子會將 “table_name” 資料表內的 “name” 欄位的 “\n” 及 “\r” 刪除:
|
1 |
UPDATE `table_name` SET `name` = REPLACE(REPLACE(`name`, '\r', ''), '\n', ''); |
如果只將刪除 “\n” 或 “\r” 其中一個字元, 可以改成這樣:
刪除 “\n”
|
1 |
UPDATE `table_name` SET `name` = REPLACE(`name`, '\n', ''); |
刪除 “\r”
|
1 |
UPDATE `table_name` SET `name` = REPLACE(`name`, '\r', ''); |