Suntem folosind un software care a limitat Oracle capacități. Trebuie să se filtrează printr-un CLOB domeniu de către asigurându-vă că are o anumită valoare. În mod normal, în afara de acest software nu ar face ceva de genul:
DBMS_LOB.SUBSTR(t.new_value) = 'Y'
Cu toate acestea, acest lucru nu este acceptată așa că eu sunt încercarea de a utiliza CAST
în schimb. Am încercat mai multe încercări diferite, dar până în prezent acestea sunt ceea ce am găsit:
Software-ul are un built-in de interogare checker/validator și acestea sunt cele care se prezinta ca invalid:
DBMS_LOB.SUBSTR(t.new_value)
CAST(t.new_value AS VARCHAR2(10))
CAST(t.new_value AS NVARCHAR2(10))
Cu toate acestea, validatorul nu accepta aceste:
CAST(t.new_value AS VARCHAR(10))
CAST(t.new_value AS NVARCHAR(10))
CAST(t.new_value AS CHAR(10))
Din păcate, chiar dacă validator vă permite acestea trece prin, atunci când rulează interogarea pentru a prelua date, am ORA-22835: Buffer too small
atunci când se utilizează VARCHAR
sau NVARCHAR
. Și am ORA-25137: Data value out of range
atunci când se utilizează CHAR
.
Există alte modalități prin care aș putea încerca să verificați meu CLOB câmp are o anumită valoare atunci când filtrarea datelor? Dacă nu, cum fac sa-mi repar probleme actuale?
DBMS_LOB.SUBSTR()
deci nu-l pot folosi. M-am gânditCAST
este capabil să taie sfoara pentru că am avut, de asemenea, să utilizați o soluție pentruTRUNC
:CAST(CAST(date_field AS VARCHAR(9)) AS DATE)
și funcționează. Acesta scapa de porțiunea de timp. Speram sa putem face ceva similar pentru asta.