我的要求是找出它们之间有空格的所有列值。
e.g。我的价值观是'aa bb cc','aa bbcc','aabb cc'。 理想情况下,如果你在它们之间排除空间,它们都是相同的! 如何使用查询或任何类型的机制从表中找出所有这些类型的列。
提前致谢。
答案 0 :(得分:0)
您可以REPLACE()
使用EXISTS()
,如下所示:
SELECT * FROM YourTable t
WHERE EXISTS(SELECT 1 FROM YourTable s
WHERE replace(t.YourCol,' ','') = replace(s.YourCol,' ','')
and t.YourCol <> s.YourCol)
答案 1 :(得分:0)
您可以简单地从字符串中删除空格,然后使用结果进行聚合:
create table dupTest ( val varchar2(16));
insert into dupTest values ('aa bb cc');
insert into dupTest values ('aa bbcc');
insert into dupTest values ('aabb cc');
insert into dupTest values ('aaBB cc');
insert into dupTest values ('a a B B c c');
insert into dupTest values ('C C B B C C');
SQL> select replace(val, ' ', '') as no_space_string,
2 count(1) as num
3 from dupTest
4 group by replace(val, ' ', '')
5 having count(1) > 1; -- only values with more than one occurrence
NO_SPACE_STRING NUM
-------------------- ----
aabbcc 3
aaBBcc 2