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

时间:2014-12-27 11:08:37

标签: mysql sql sql-server select replace

我正在尝试创建一个只留下“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函数,通过忽略这些字符来删除重复项:/。,+ - '。但是我失败了,我感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

您可能需要考虑将LIKE与reg-ex模式一起使用。

也许是where子句:

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

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

答案 1 :(得分:1)

试试这个:

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

答案 2 :(得分:1)

试试这段代码,

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

以上代码仅匹配字母和空格。

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

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