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通过忽略非字母和非数字来删除重复记录[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

RegEx(在 JavaScript 中查找/替换) - 匹配非字母数字字符但忽略 - 和 +

SQL Server:如何从字符串中删除前导/尾随非字母数字字符?

用于匹配空格或标点符号和非字母数字的正则表达式

python 计算数字中的每个数字和非间隔字符串中的每个字母。将它们分组为字典并打印字典。

有没有更简洁的方法来删除非字母数字字符并替换空格?

SQL Server:聚集和非聚集索引[重复]