我有一個不尋常的查詢,這讓我找到卡住了MySQL查詢,刪除所有空格
表字段有:
id bigint 20
name varchar 255
desc text
有具有相同名稱和desc多條記錄,但說明有一些在話猶如
之間
1 't1' 'hello world'
2 't2' 'hello world'
我需要找到那些有SI行多餘空格milar data
我怎樣才能找到這些,謝謝。
我有一個不尋常的查詢,這讓我找到卡住了MySQL查詢,刪除所有空格
表字段有:
id bigint 20
name varchar 255
desc text
有具有相同名稱和desc多條記錄,但說明有一些在話猶如
之間
1 't1' 'hello world'
2 't2' 'hello world'
我需要找到那些有SI行多餘空格milar data
我怎樣才能找到這些,謝謝。
這非常接近。假設:
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| d | text | YES | | NULL | |
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
那麼這個查詢:
select x.id,x2.id,x.d,x2.d from x left join x as x2 on replace(x.d," ","") = replace(x2.d," ","") and x.id != x2.id having !(x2.id is null);
獲取你重複的行。如果你有「Helloworld」(即沒有空間)並且你不想匹配,它就會失敗。
除非您需要保留原始數據,否則在插入時最好在創建/更新記錄時完成,而不是在以後的比較時間。
話雖這麼說,你可以不喜歡
SELECT id, name, desc, REPLACE(desc, ' ', ' ') as replaced
xx x <--note the number of spaces
FROM table
GROUP replaced
HAVING replaced > 1
可能不會完美,你將不得不幾次調整更換部分,但這應該讓你開始。