如何查找以相同单词开头的所有行


MYSQL/PHP How to find all rows that start with the same word?

在我的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]%'