在我的DB我有一个表与品牌名称,我需要清理它因为我有一些重复项,比如
Yadda
Yadda,.
Yadda工程
是同一品牌,但被错误输入多次,尽管列是唯一的
如何处理这个问题?这可以在mysql查询只做吗?
谢谢
我的建议首先为搜索列创建全文索引。在与全文评分后,您可以确定字符串的相似性。删除它们,除非它们的得分大于阈值。
DELETE FROM table_name
WHERE
id <> (SELECT id FROM table_name ORDER BY MATCH (title) AGAINST ('Yada' IN NATURAL LANGUAGE MODE) DESC LIMIT 0,1) AND
MATCH (title) AGAINST ('Yada' IN NATURAL LANGUAGE MODE) < threshold
也可以关闭全文,你可以在这个答案中使用levenshtein
函数(具有相同的逻辑sql查询)如何计算MYSQL中两个字符串之间的相似度
可以使用substr
假设您的行都以单词'Yadda'开头,您可以
select * from my_table
where substr(my_column, 1, length('Yadda')) = 'Yadda');
如果你需要删除不合适的行,你可以(假设你想保存行'Yadda &你可以
delete from my_table
where substr(substr(my_column, 1, length('Yadda')) = 'Yadda')
and my_column <> 'Yadda & Co';
或美式
delete from my_table
where substr(substr(my_column, 1, length('American')) = 'American')
and my_column not in ('American Standard', 'American Airlines');
SELECT Name FROM Table WHERE Name REGEXP '^[Y].*$'
在这里,REGEXP代表正则表达式
和
这是T-SQL
SELECT Name FROM Table WHERE Name LIKE '[Y]%'