我有一个表,在其中添加了英语词典单词。现在我有一些记录看起来是重复的,但字符串的长度不同。
例如,"aaron"在我的表中重复了两次,但当我使用这个查询时:
select id, word, char_length(word) from my_table;
我得到以下回复:
id | word | char_length
7 | aaron | 5
12 | aaron | 6
同一个单词的char_length
怎么会改变?如何删除一个长度超过1的单词?
@Vatev的评论很可能是正确的。
尝试以下两个查询:
1. SELECT * FROM my_table WHERE word = 'aaron';
2. SELECT * FROM my_table WHERE word like '%aaron%';
第一个将只匹配单词恰好为aaron
的行,而第二个将匹配任何位置包含aaron的行。如果有带有额外内容的行,比如空白,它们会显示在第二行,但不会显示在第一行。
清除这些重复项的一种可能方法是运行以下程序:
DELETE FROM my_table WHERE TRIM(word) != word;
但不要盲目地运行它——它会删除带有额外空白的所有行,即使没有匹配的"正确"条目。