Sme pomocou softvéru, ktorý má obmedzenú Vešteckých schopností. Potrebujem filter prostredníctvom CLOB pole uistiť sa, že to má určitú hodnotu. Za normálnych okolností, mimo tohto softvéru by som urobiť niečo ako:
DBMS_LOB.SUBSTR(t.new_value) = 'Y'
Avšak, toto nie je podporované, takže som pokuse o použitie CAST
namiesto toho. Snažil som sa veľa rôznych pokusov, ale tak ďaleko to, čo som našiel:
Softvér má zabudovanú dotaz checker/validator a to sú tie, ukazuje, ako neplatné:
DBMS_LOB.SUBSTR(t.new_value)
CAST(t.new_value AS VARCHAR2(10))
CAST(t.new_value AS NVARCHAR2(10))
Avšak, validator sa prijať tieto:
CAST(t.new_value AS VARCHAR(10))
CAST(t.new_value AS NVARCHAR(10))
CAST(t.new_value AS CHAR(10))
Bohužiaľ, aj keď validator umožňuje tieto nich prejsť, keď je spustený dotaz na načítanie údajov, mám ORA-22835: Buffer too small
pri používaní VARCHAR
alebo NVARCHAR
. A ja si ORA-25137: Data value out of range
pri používaní CHAR
.
Existujú aj iné spôsoby, ako by som mohol pokúsiť zistiť, že moje CLOB pole má určitú hodnotu, keď filtrovanie údajov? Ak nie, ako sa môžem aktuálne otázky?
DBMS_LOB.SUBSTR()
tak som sa nemôže použiť. Myslel som si,CAST
je schopný znížiť reťazec, lebo sme sa tiež mali používať riešenie preTRUNC
:CAST(CAST(date_field AS VARCHAR(9)) AS DATE)
a funguje to. To zbaví čase časť. Dúfal som, že by sme mohli robiť niečo podobné pre tento jeden.