Announcement

Collapse
No announcement yet.

Like-Suche im Oracle Blobfeld

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Like-Suche im Oracle Blobfeld

    Mit dem folgenden Select erhalte ich die richtige Ergebnismenge der Suche in einem Oracle Blobfeld nach dem String iSuchWert.<BR>
    <PRE>
    st:= 'Select * from MyTabelle where ' +
    ' DBMS_LOB.Instr(' + iBlobFeldName + ',';
    ' SYS.UTL_RAW.CAST_TO_RAW(''' + iSuchwert + ''')) > 0';

    with FDtst do begin
    Close;
    CommandText:= st;
    Open;
    end;
    </PRE>
    <P>
    Fdtst ist vom Typ TSQLDataSet.
    <P>
    Wie kann ich eine like-Suche mit % bzw. _ erreichen? Kann der TabSpaltenwert auf UPPER gesetzt werden ( ... where UPPER(iFeldName) = upperCase(iSuchwert))?

  • #2
    Hallo,<br>
    <br>
    man kann bei ORACLE in LONG-/CLOB-/NLOB-Felder nicht<br>
    nach Strings suchen ("like" etc.).<br>
    <br>
    Auszug aus der Doku.:<br>
    Restrictions on LONG and LONG RAW Data <br>
    Although LONG (and LONG RAW; see below) columns have many uses,<br>
    their use has some restrictions: <br>
    ...<br>
    LONG columns cannot be referenced by SQL functions<br>
    (such as SUBSTR or INSTR).<br>
    ...<br>
    <br>
    Gruss,<br>
    Ulric

    Comment


    • #3
      Hallo Ulrich,

      danke für die schnelle Antwort. Den Auszug habe ich auch gelesen. Nachdem ich allerdings mit meinem Beispiel doch die INSTR-Suche - wenn auch nicht auf direktem Wege - geschafft hatte, habe ich auf weitere Hintertürchen gehofft.<P>

      Hier noch mal der SQLText: <BR>

      'Select * from MyTabelle <BR>
      where DBMS_LOB.Instr(MyBlobField,SYS.UTL_RAW.CAST_TO_RAW ('Meier'))>0'; <P>

      Damit finde ich aus tausenden von Datensätzen in annehmbarer Zeit alle "Meier's" im Blob. Wo bleiben die mit "ai", "ey" u.s.w.? <P>

      Wer weiß Rat? <P>

      Gruß, <BR>
      Joche

      Comment

      Working...
      X