2014-11-25 3 views
2
select table_name, column_name 
from all_tab_columns 
where column_name = '<YOUR_COLUMN_HERE_IN_CAPITAL_CASE>' 

Oracle 데이터베이스에서 특정 스키마에 대해 위의 열 검색 쿼리를 사용하려면 어떻게해야합니까?특정 스키마에서 데이터베이스의 모든 테이블 내에서 열 이름을 검색하는 방법

나는 쿼리를 시도했기 때문에 내가 관심이있는 스키마 밖에서 많은 테이블을 반환했기 때문에 묻습니다. 그래서 그들은 내 관심사가 아닙니다.

답변

4
select table_name, column_name 
FROM all_tab_columns 
where column_name = '<YOUR_COLUMN_HERE_IN_CAPITAL_CASE>' 
    and owner = '<schema>'; 

all_tab_columns에는 현재 사용자에게 권한이있는 모든 열이 들어 있습니다. 따라서 모든 데이터를 반환하지 않을 수 있습니다.

dba_tab_columns에는 모든 열에 대한 정보가 포함되어 있지만이 사전보기를 쿼리 할 때 특별한 권한이 필요할 수 있습니다. 그것은 단지 모두 포함 (

select table_name, column_name 
FROM user_tab_columns 
where column_name = '<YOUR_COLUMN_HERE_IN_CAPITAL_CASE>'; 

을하지만이보기는 OWNER 열이 없습니다 : 당신은 현재 사용자가 소유 한 모든 테이블의 컬럼에 관심이 있다면

그리고 마지막으로, 당신은 사용할 수 있습니다 현재 사용자가 소유 한 열)

0

LIKE 함수를 사용하여 검색을 구체화 할 수 있습니다. 나는 컬럼의 정확한 이름을 모르는,하지만 당신은이 일에 소유자와 테이블 이름을 추가 할 수의

select column1,column2,column3,more_columns 
from all_tables_you_need 
where column1 like '%&column1%' 
and column2 like '%&column2%' 
and column3 like '%&column3%'; 

어느 쪽이 유사한 방법으로

select table_name, column_name 
from all_tab_columns 
where column_name = '<YOUR_COLUMN_HERE_IN_CAPITAL_CASE>' 

그 3 개의 변수는 비어있을 수도 있지만 매우 구체적인 변수를 넣을 수도 있으므로 결과가 많이 달라집니다. 대소 문자가 확실하지 않거나 대소 문자를 구분하지 않으려면 UPPER 함수를 사용하십시오.

관련 문제