모든_views의 "텍스트" 열 필터링
오라클의 all_views 테이블에 있는 텍스트 열을 필터링할 수 있는 방법이 있습니까?
예:
SELECT *
FROM ALL_VIEWS
WHERE UPPER(TEXT) LIKE '%FOO%';
예외:
ORA-00932: inconsistent datatypes: expected NUMBER got LONG
00932. 00000 - "inconsistent datatypes: expected %s got %s"
편집:
DESC ALL_VIEWS
Name Null Type
---------------- -------- --------------
OWNER NOT NULL VARCHAR2(30)
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG()
TYPE_TEXT_LENGTH NUMBER
TYPE_TEXT VARCHAR2(4000)
OID_TEXT_LENGTH NUMBER
OID_TEXT VARCHAR2(4000)
VIEW_TYPE_OWNER VARCHAR2(30)
VIEW_TYPE VARCHAR2(30)
SUPERVIEW_NAME VARCHAR2(30)
select 문을 통해 즉시 clob으로 변환할 수 없습니다. to_lob 함수는 INSERT 문과 함께 작동하지만, 이는 별도의 테이블을 설정하고 to_lob을 사용하여 insert를 수행해야 한다는 것을 의미합니다.
pl/sql에서 varchar에 대한 할당 변환을 수행할 수 있으며, 대부분의 경우 all_views의 text_length가 < 32767이므로 다음을 선택하는 것만큼 좋지는 않지만 "대부분" 사례를 포함합니다.
declare
l_search varchar2(1000) := 'union';
l_char varchar2(32767);
begin
for rec in (select * from all_views where text_length < 32767)
loop
l_char := rec.text;
if (instr(l_char, l_search) > 0) then
dbms_output.put_line('Match found for ' || rec.owner || '.' || rec.view_name);
end if;
end loop;
end;
여기서 'union' 문자열에 대한 텍스트 필드를 검색하고 있습니다.
도움이 되길 바랍니다.
안타깝게도 SQL에서는 LONG 열을 쉽게 조작할 수 없습니다.
현재 문제의 경우 해결 방법으로 뷰를 사용하여 테이블에 종속된 모든 뷰를 찾을 수 있습니다.
SELECT *
FROM all_dependencies
WHERE type = 'VIEW'
AND referenced_owner = 'TABLE_OWNER'
AND referenced_name = 'YOUR_TABLE';
TEXT 대신 TEXT_VC에서 검색
SELECT *
FROM ALL_VIEWS
WHERE UPPER(TEXT_VC) LIKE '%FOO%';
Oracle Developer에서 실행하고 Excel로 내보내기
view_name을 선택하고 소유자가 = 'MyDb'인 all_message의 텍스트를 선택합니다.
SQL Server로 Excel 파일 가져오기([ALL_VIEWs] 테이블로)
[MyDb]에서 [VIEW_NAME], [TEXT]를 선택합니다.[dbo].[ALL_VIEW] 여기서 [텍스트]는 '%FOO%'와 같습니다.
만약 당신이 12c 이전이라면 (text_vc
12.1+에만 존재합니다). 그리고 다음 쿼리가 작동하는 처음 4000자를 통해 보기를 충분히 스캔할 수 있습니다.
with parsed_all_views as (
select owner, view_name, text_length, TEXT as VARCHAR_TEXT
from xmltable( '/ROWSET/ROW' passing dbms_xmlgen.getXMLType(
'select TEXT, owner, view_name, text_length '
||' from all_views WHERE owner = ''**YOUR_SCHEMA_NAME**'' '
) columns TEXT varchar2(4000), owner varchar2(32), view_name
varchar2(32), text_length varchar2(32))
)
select * from parsed_all_views where upper(VARCHAR_TEXT) like '%DISTINCT%'
언급URL : https://stackoverflow.com/questions/9228812/filter-text-column-on-all-views
'IT' 카테고리의 다른 글
SQLite 파일 위치 핵심 데이터 (0) | 2023.08.01 |
---|---|
C-Array가 함수로 전달될 때 C-Array의 크기() 값이 잘못된 이유는 무엇입니까? (0) | 2023.08.01 |
ES8 비동기/대기를 스트림과 함께 사용하는 방법은 무엇입니까? (0) | 2023.08.01 |
시 변 경 트 ( ) 이 리 거 트 벤 정 ( ▁setting ▁ 거 트 ▁change ) ▁event ▁trigger 설 리 정 ) 시 시 변 경 트 ( ) 이 리 거 트 벤 정 ( ▁setting ▁ 거 트 ▁change ) ▁event ▁trigger 설 리 정 ) 시 시 변 경 트.. (0) | 2023.08.01 |
하단 탐색 보기에서 선택한 탭의 색상 (0) | 2023.08.01 |