[英]MYSQL/PHP How to find all rows that start with the same word?
在我的數據庫中,我有一個帶有品牌名稱的表,我需要清理它,因為我有一些重復項,例如
亞達
亞達公司
雅達工程
相同的品牌,但盡管該列是唯一的,但仍多次輸入錯誤
如何處理呢? 只能在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&Co”保存行,則可以
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]%'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.