반응형
clob에 Oracle 문자열이 포함되어 있는지 확인합니다.
현재 저는 이 코드에 대한 질문이 있습니다.to_char(CLOB_COLUM) like %s
하지만 다음은 아주 큰 클럽에는 효과가 없을 것입니다.이 열에 문자열이 포함되어 있는지 확인할 수 있는 다른 솔루션이 있습니까?오라클 11.2.0.4.0 사용
다음을 사용할 수 있습니다.
SELECT *
FROM your_table
WHERE DBMS_LOB.INSTR( clob_column, 'string to match' ) > 0;
또는
SELECT *
FROM your_table
WHERE clob_column LIKE '%string to match%';
MT0의 답변을 기반으로 합니다.저는 어떤 방법이 효율적인지 테스트합니다.
CLOB 열 길이는 155018이며 32개의 길이 문자열을 검색합니다.
여기 제 시험이 있습니다.
| INSTR | LIKE |
|:-------|------:|
| 0.857 |0.539 |
| 0.127 |0.179 |
| 1.635 |0.534 |
| 0.511 |0.818 |
| 0.429 |1.038 |
| 1.586 |0.772 |
| 0.461 |0.172 |
| 0.126 |1.379 |
| 1.068 |1.088 |
| 1.637 |1.169 |
| 0.5 |0.443 |
| 0.674 |0.432 |
| 1.201 |0.135 |
| 0.419 |2.057 |
| 0.731 |0.462 |
| 0.787 |1.956 |
INSTR의 평균 시간은 0.797입니다.
LIKE의 평균 시간은 0.823입니다.
열의 값을 확인하고 오라클이 반환하는 경우ORA-22835
(너무 작은 크기로 표시됨)WHERE clob_column LIKE '%string to match%'
그런 다음 해결 방법을 적용해야 합니다.
의 조합DBMS_LOB.instr
그리고.DBMS_LOB.substr
해결책이 될 수 있습니다.예: 이 스택 오버플로 팁을 참조하십시오.그래서, 당신의 경우:
SELECT DBMS_LOB.substr(your_clob_column, DBMS_LOB.instr(your_clob_column,'string to match'), 1) AS Text
FROM your_table
WHERE DBMS_LOB.instr(your_clob_column, 'string to match') > 0
사용하다DBMS_LOB.COMPARE()
SELECT *
FROM your_table
WHERE DBMS_LOB.COMPARE( clob_column, 'string to match' ) = 0;
비교가 성공하면 반환 값 정수: 0, 실패하면 0이 아닙니다.
언급URL : https://stackoverflow.com/questions/44025050/check-if-clob-contains-string-oracle
반응형
'programing' 카테고리의 다른 글
Firebase 클라우드 기능 배포 오류 (0) | 2023.06.30 |
---|---|
Mac용 Excel VBA에서 HTTP GET를 발급하는 방법 (0) | 2023.06.30 |
스토어 또는 게터의 상태에 액세스하시겠습니까?_WEBPACK_IMPORTED_MODULE_3__store__.a.dispatch는 함수가 아닙니다. (0) | 2023.06.30 |
R Studio를 사용하여 R 업데이트 (0) | 2023.06.30 |
Python에서 AWS 오류:람다_function이라는 모듈이 없습니다. (0) | 2023.06.30 |