私の要件は、それらの間にスペースがあるすべての列値を見つけることです。Oracle SQLの列のパターン一致
私の値は「aa bb cc」、「aa bbcc」、「aabb cc」です。 これらの間にスペースを入れないと理想的には同じです! クエリまたは任意の種類のメカニズムを使用して、これらのタイプの列をすべてテーブルから見つける方法を教えてください。
ありがとうございます。
あなたはこのようEXISTS()
で
REPLACE()
を使用することができます
私の要件は、それらの間にスペースがあるすべての列値を見つけることです。Oracle SQLの列のパターン一致
私の値は「aa bb cc」、「aa bbcc」、「aabb cc」です。 これらの間にスペースを入れないと理想的には同じです! クエリまたは任意の種類のメカニズムを使用して、これらのタイプの列をすべてテーブルから見つける方法を教えてください。
ありがとうございます。
あなたはこのようEXISTS()
で
REPLACE()
を使用することができます
:
SELECT * FROM YourTable t
WHERE EXISTS(SELECT 1 FROM YourTable s
WHERE replace(t.YourCol,' ','') = replace(s.YourCol,' ','')
and t.YourCol <> s.YourCol)
あなたは単にあなたの文字列からスペースを削除して集約する結果を使用することができます。
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
最初の段落だけで、あなたは「言いますスペースで値を探します。 2番目の段落では、空白を無視すると同じ値を探していますが、空白を無視して数えたり、何か他のものを探したりしていますか? –
はい。あなたが正しいです。空白を除いた重複を探しています –
単一の行またはすべての重複行のリストが必要ですか?あなたの例では、1つの集約行または3つの行すべてが必要ですか? – Aleksej