BLOB를 CLOB로 변환하는 방법은?
저는 오라클 11g을 사용하고 있고 텍스트 길이를 알아내려고 합니다.제가 평소에.select length(myvar) from table
, 그럴 순 없어요
내가 문의하고 싶은 테이블은BLOB
문자나 사진을 저장하는 열.나는 내가 몇자인지 알고 싶습니다.BLOB
기둥이 있습니다.
저는 제 것을 변환하려고 했습니다.BLOB
매력에 빠진UTL_RAW.CAST_TO_VARCHAR2(myblob) from table
, 이 기능이 제대로 작동하지 않거나 실수를 한 것 같습니다.
예를 들어: 내BLOB
언질이 나다Section
, 이것을 데이터베이스에서 16진수 형태로 볼 때S.e.c.t.i.o.n.
. 왜 각각의 글자 사이에 그런 점들이 있는지 모르겠어요.그런 다음 이 쿼리를 사용했습니다.
select UTL_RAW.CAST_TO_VARCHAR2(myblob)
from table
이 쿼리의 결과는 다음과 같습니다.'S'
그러니까 내 말은 완전한 말이 아닙니다.BLOB
다음과 같은 질문을 할 때:
select length(UTL_RAW.CAST_TO_VARCHAR2(myblob))
from table
결과는18
, 그러나 그 말은Sections
18자가 없습니다.
저는 전환을 시도하고 있었습니다.BLOB
로VARCHAR
, 내 최선의 선택은CLOB
왜냐하면 그것이 저장할 수 있는 텍스트의 길이가 제한보다 더 길기 때문입니다.VARCHAR
has. 나는 다음과 같은 질문을 함으로써 이를 시도했습니다. (이것이 맞는지는 확실하지 않지만 인터넷에서 찾은 것입니다.)
select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(myblob, 32767, 1))
from table
이 쿼리는 또한 반환합니다.'S'
이 스레드에 와서 블롭을 클롭으로 변환하는 방법을 알고 싶은 모든 사람을 위해.여기 예가 있습니다.
create function clobfromblob(p_blob blob) return clob is
l_clob clob;
l_dest_offsset integer := 1;
l_src_offsset integer := 1;
l_lang_context integer := dbms_lob.default_lang_ctx;
l_warning integer;
begin
if p_blob is null then
return null;
end if;
dbms_lob.createTemporary(lob_loc => l_clob
,cache => false);
dbms_lob.converttoclob(dest_lob => l_clob
,src_blob => p_blob
,amount => dbms_lob.lobmaxsize
,dest_offset => l_dest_offsset
,src_offset => l_src_offsset
,blob_csid => dbms_lob.default_csid
,lang_context => l_lang_context
,warning => l_warning);
return l_clob;
end;
blob을 clob으로 변환하려면 다음을 시도합니다.
SELECT TO_CLOB(UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(MYBLOB,2000)))
FROM MYTABLE;
SELECT DBMS_LOB.GetLength( myblob ) length_in_bytes
FROM table
는 BLOB의 길이를 바이트 단위로 반환합니다.BLOB의 문자 데이터는 UTF-16 문자 집합을 사용하여 인코딩되어 바이트 수가 문자 수의 두 배가 될 수 있습니다(사용 중인 유니코드 버전과 저장 중인 특정 데이터에 따라).일부 문자의 경우 4바이트의 스토리지가 필요할 수 있지만 해당 문자를 처리할 가능성은 상대적으로 낮습니다.
사용할 수 있습니다.DBMS_LOB.ConvertToClob
BLOB를 CLOB로 변환하는 프로시저(이 프로시저이기 때문에 PL/SQL 블록에서 호출해야 함).변환의 일환으로 데이터가 인코딩된 문자 집합을 지정해야 합니다. 애플리케이션에서 UTF-16 문자 집합을 사용하고 있다고 가정하지만 이는 단지 가정에 불과합니다.
CLOB로만 변환:
select TO_CLOB(UTL_RAW.CAST_TO_VARCHAR2(YOURCLOB)) from DUAL;
사이즈 제한 없이 크레이그에서 영감을 받아 제작되었습니다.
언급URL : https://stackoverflow.com/questions/12849025/how-to-convert-blob-to-clob
'source' 카테고리의 다른 글
워드프레스:사용자 정의 필드의 모든 값 가져오기 (0) | 2023.10.21 |
---|---|
그 끝에 cross(x) 버튼이 있는 EditText를 만드는 방법? (0) | 2023.10.21 |
낙관적 vs.비관적 잠금 (0) | 2023.10.21 |
mysql로 가져올 때 utf8 가글링됨 (0) | 2023.10.21 |
창 닫기 또는 페이지 새로 고침에서 자바스크립트 코드를 실행하시겠습니까? (0) | 2023.10.21 |