다른 데이터 유형 간에 문자열 형식의 데이터를 변환하는 것은 일반적으로 Oracle에서 간단한 프로세스이지만 일부 경우는 다른 것보다 조금 더 어렵습니다. 이 중 하나는 Oracle을 사용하여 clob을 varchar2로 변환할 때 발생합니다. varchar2 열은 최대 4,000자를 가지며 clob은 많은 양의 문자를 저장할 수 있습니다. 데이터. 그러나 dbms_lob substr 메서드 또는 to_char를 사용하고 최대 크기를 지정하면 여전히 목표를 달성할 수 있습니다.
CLOB 및 VARCHAR2 설명
CLOB(또는 구어체로 "clob")는 "character large object"의 약어이며 최대 4GB의 데이터를 저장할 수 있습니다. DB2 및 Oracle을 포함한 여러 데이터베이스 시스템에서 사용됩니다. CLOB는 방대한 양의 데이터를 저장해야 할 때 유용하지만 크기 자체가 상황에 따라 문제를 일으킬 수 있습니다. 이것이 작업을 수행하기 전에 Oracle CLOB에서 보다 관리하기 쉬운 크기의 문자열 형식으로 변환하는 것이 종종 좋은 방법인 이유입니다.
오늘의 비디오
VARCHAR2 형식은 최대 32,767바이트까지 늘어날 수 있는 확장된 최대 문자열 크기를 사용하지 않는 한 일반적으로 최대 4,000바이트의 더 적은 양의 데이터를 저장합니다. 1바이트 문자 집합의 경우 일반적으로 한 열에 최대 4,000자를 사용할 수 있습니다. 이 두 데이터 형식의 최대 크기 사이의 불일치는 변환 중에 문제가 발생하는 위치입니다.
dbms_lob substr 메서드
clob 문자열을 varchar2로 변환하려면 SQL *Plus 프로그램을 엽니다. 수행해야 하는 변환 구문은 다음과 같습니다.
SELECT dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) FROM 테이블
여기서 괄호 안의 값은 변경해야 하는 값이며 끝에 있는 "표"입니다. 이것은 열("clob_column") 및 작업 중인 테이블에 해당합니다. "for_how_many_bytes"는 변환할 데이터의 바이트 수를 지정할 수 있는 기회를 제공하고 "from_which_byte"는 시작점을 지정할 수 있습니다.
따라서 "taxes"라는 테이블과 "net_pay"라는 필드가 있고 첫 번째부터 시작하여 4,000바이트를 원한다고 가정하면 다음을 입력합니다.
세금에서 dbms_lob.substr (net_pay, 4000, 1) 선택
문자열을 varchar2 형식으로 변환합니다.
TO_CHAR 메서드
매우 유사한 구문으로 TO_CHAR 명령을 사용하여 동일한 목표를 달성할 수도 있습니다.
SELECT TO_CHAR(SUBSTR(clob_column, 0,3999)) FROM 테이블
여기에서 시작 바이트와 끝 바이트는 0과 3999로 지정됩니다(시작 4,000자 문자열의 경우 처음부터) 그러나 "clob_column" 및 "table" 필드는 다음과 정확히 같은 방식으로 사용됩니다. 전에. 따라서 동일한 예에서 다음을 입력할 수 있습니다.
SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) FROM 세금
기본적으로 단일 단계로 프로세스를 완료하는 대신 SUBSTR 명령을 사용하여 더 큰 문자열에서 하위 문자열을 가져온 다음 "to_char"를 사용하여 변환을 처리합니다. 해당 clob 열의 정보가 4,000바이트 미만인 경우 하위 문자열을 지정하는 대신 to_char 뒤의 괄호 안에 열 이름을 입력할 수 있습니다.