Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Abfrage der Oracle-Clob-Spalte

Ja, es ist nicht erlaubt (diese Einschränkung betrifft nicht CLOB s-Vergleich in PL/SQL), um Vergleichsoperatoren wie = zu verwenden , != , <> und so weiter in SQL-Anweisungen, wenn versucht wird, zwei CLOB zu vergleichen Spalten oder CLOB Spalte und ein Zeichenliteral, wie Sie es tun. Um einen solchen Vergleich in SQL-Anweisungen durchführen zu können, dbms_lob .compare() Funktion verwendet werden.

  select * 
    from aTable 
   where dbms_lob.compare(aClobColumn, 'value') = 0

In der obigen Abfrage der 'value' Literal wird implizit in CLOB umgewandelt Datentyp. Um eine implizite Konvertierung zu vermeiden, muss der 'value' Literal kann explizit in CLOB umgewandelt werden Datentyp mit TO_CLOB() -Funktion und übergeben Sie sie dann an compare() Funktion:

  select * 
    from aTable 
   where dbms_lob.compare(aClobColumn, to_clob('value')) = 0