簡體   English   中英

MYSQL / PHP如何查找以相同單詞開頭的所有行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM