너무 어렵게 생각하시는 거 아닌지..
가장 기초적인 방법이
SELECT * FROM TABLE WHERE COL1 = :VALUE OR COL2 = :VALUE OR COL3 = :VALUE....
이런 방법일테죠.
참고로.. 저도 얼마전에 배운 내용입니다만
특정 테이블 숫자형 컬럼에 특정 데이터가 존재하느냐의 여부는
SELECT NVL (wm_concat (column_name), 'no data found')
FROM (SELECT column_name
FROM all_tab_columns
WHERE table_name = UPPER (:in_tablenm)
AND TO_NUMBER (DBMS_XMLGEN.getxmltype ( 'select 1 from '
|| table_name
|| ' where '
|| column_name
|| ' like '''
|| :in_val
|| ''' and rownum = 1'
).EXTRACT ('//text()')
) = 1
AND DATA_TYPE = 'NUMBER'
ORDER BY column_name);
이렇게 확인해보실 수 있어요.
해당 값을 가진 컬럼이 모두 나옵니다.
다시 해당 컬럼들로 조회해보시면 어떤 ROW가 그 값을 가지고 있는지 알 수 있구요.
다만 테이블 사이즈가 클 경우 FULL서칭이라 서버에 부담이 될 수 있어요.
어떻게 잘 변형하면 ROW까지 한방에 나오게 할 수 있을 것 같긴하네요.
그냥 정석으로 OR 사용하시는 게 좋을 것 같습니다.