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:如何从字符串中删除前导/尾随非字母数字字符?