SQL通过忽略非字母和非数字来删除重复记录[关闭]

Posted

技术标签:

【中文标题】SQL通过忽略非字母和非数字来删除重复记录[关闭]【英文标题】:SQL to remove duplicated records by ignoring non-letters and non-digits [closed] 【发布时间】:2015-02-24 07:52:54 【问题描述】:

我正在尝试创建一个只留下“yahoo Finance”的 SQL 查询,并删除以下数据集中的其他查询。该数据集是 InnoDB 表的一部分。

yahoo/finance

yahoo.finance

yahoo. finance

yahoo-finance

yahoo+finance

yahoo finance

yahoo .finance

yahoo . finance

yahoo - finance

yahoo + finance

我尝试编写一个通过忽略以下字符来删除重复项的 SQL 函数:/.,+-'。但是我失败了,我很感激任何帮助。谢谢!

【问题讨论】:

致@VMAtm 和其他人——我真的不明白为什么这个问题是题外话 【参考方案1】:

试试这个:

SELECT DISTINCT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(columnA, '/', ' '), '.', ' '), ',', ' '), '+', ' '), '-', ' '), '  ', ' '), '  ', ' ')
FROM tableA;

【讨论】:

这是最脏的,但在我的情况下它是最可靠的。【参考方案2】:

您可能需要考虑将LIKE 与正则表达式模式一起使用。

也许是一个类似的 where 子句:

... WHERE Field LIKE 'yahoo[. -+]finance'

http://msdn.microsoft.com/en-us/library/ms179859.aspx

【讨论】:

【参考方案3】:

试试这个代码,

SELECT * FROM table WHERE column REGEXP '^[A-Za-z ]+$'

上面的代码将只匹配字母和空格。

要删除其他条目,请尝试以下代码,

DELETE FROM table WHERE column NOT REGEXP '^[A-Za-z ]+$';

【讨论】:

以上是关于SQL通过忽略非字母和非数字来删除重复记录[关闭]的主要内容,如果未能解决你的问题,请参考以下文章