如何在DB2中使用具有不同拼写的IN条件查询多条记录

时间:2018-07-20 15:03:59

标签: sql join select db2

我在了解SQL方面迈出了一步。 现在我有一个问题,希望您能帮助我。

我想在一个表上进行选择,该表向我显示了多次可用的所有记录(使用不同的拼写) 喜欢: abcd123和ABCD123和ABcd123 ...

db2 "select * from table where row in (select row from table GROUP BY row HAVING (COUNT(row) > 1)) order by row"

例如:

db2 "select * from table where surname in (select surname from table GROUP BY surname HAVING (COUNT(surname) > 1)) order by surname"

上面的代码向我展示了可以在相同的拼写(例如SMITH AND SMITH AND SMITH)中多次使用的记录,但是在不同的拼写(例如SMITH AND Smith和Smith和Smith和Smith和Smith)中却可以使用

请帮助我。 (我无法加入JOINS。实际上不是我所知)

感谢帮助。

2 个答案:

答案 0 :(得分:1)

如果您唯一关心的是大写字母,请使用lower()upper()

select t.*
from table
where lower(t.surname) in (select lower(t2.surname)
                           from table t2
                           group by lower(surname) 
                           having count(*) > 1
                          )
order by surname;

如果您担心其他潜在的拼写错误,那么问题就很复杂了。

答案 1 :(得分:0)

尝试将UPPER()函数添加到比较中

select * from table
where UPPER(surname) in (
   select   UPPER(surname) from table
   GROUP BY UPPER(surname)
   HAVING (COUNT(*) > 1)
) order by surname