E 'possibile cercare attraverso il testo blob usando l'istruzione sql? Posso selezionare * dalla tabella $ dove f1 mi piace '% foo%' se f1 è varchar, che ne dici di f1 è un blob? Qualche controparte per questo?ricerca testo blob oracle
risposta
Se si memorizza testo normale, dovrebbe essere un CLOB, non un BLOB, e quindi è possibile eseguire query utilizzando LIKE. Un BLOB contiene dati binari che Oracle non conosce la struttura di, quindi non può cercarlo in questo modo.
Questo funziona per CLOB di qualsiasi lunghezza (almeno su Oracle 12C):
SQL> create table t1 (c clob);
Table created.
SQL> declare
2 x clob;
3 begin
4 for i in 1..100 loop
5 x := x || rpad('x', 32767, 'x');
6 end loop;
7 x := x || 'z';
8 for i in 1..100 loop
9 x := x || rpad('x', 32767, 'x');
10 end loop;
11 insert into t1 values (x);
12 end;
13/
PL/SQL procedure successfully completed.
SQL> select dbms_Lob.getlength(c) from t1 where c like '%z%';
DBMS_LOB.GETLENGTH(C)
---------------------
6553401
Si noti che c'è un solo 'z' in quel CLOB 6.554.401 byte - proprio nel bel mezzo di esso:
SQL> select instr(c, 'z') from t1;
INSTR(C,'Z')
------------
3276701
Se si tratta di un documento Word o PDF, guardare in Oracle Text.
Questo è abbastanza possibile e facile da fare.
Basta usare dbms_lob.instr in combinazione con utl_raw.cast_to_raw
Quindi nel tuo caso, se T1 è un BLOB di selezione sarà simile:
select *
from table1
where dbms_lob.instr (t1, -- the blob
utl_raw.cast_to_raw ('foo'), -- the search string cast to raw
1, -- where to start. i.e. offset
1 -- Which occurrance i.e. 1=first
) > 0 -- location of occurrence. Here I don't care. Just find any
;
++ Quando il database non è il tuo, dire che lo schema è sbagliato non è utile tutto. Grazie mille per resuscitare e rispondere alla domanda! – Decker
È lento, ma funziona, grazie! –
questo mi ha davvero aiutato grazie! –
- 1. Oracle BLOB vs VARCHAR
- 2. convertire blob oracle in xml tipo
- 3. troppo complicata JDBC Oracle movimentazione BLOB
- 4. Yii2 salvataggio del file su Oracle BLOB
- 5. Blob Oracle: dimensioni del negozio o calcolo?
- 6. blob vs testo nel forum
- 7. Memorizza il testo in BLOB?
- 8. SQLAlchemy JSON come blob/testo
- 9. Come ottengo il contenuto testuale da BLOB in Oracle SQL
- 10. Condizioni (come "mi piace") su campo binario (blob) in oracle
- 11. Differenze tra BLOB BLOB BLOB BLOB e BLOB della pagina?
- 12. Visualizza dati BLOB che contengono testo in formato XML
- 13. phpMyAdmin - Mostra i campi BLOB come testo?
- 14. dbms_lob.getlength() Lunghezza vs.() per trovare dimensioni blob in Oracle
- 15. Inserisci blob nel database di Oracle con C#
- 16. Come selezionare una parte di un campo BLOB in Oracle?
- 17. Inserire BLOB utilizzando java per DB2 e Oracle
- 18. Devo usare blob o testo per JSON in MySQL?
- 19. Ricerca di testo completo
- 20. Tabella di ricerca per decodifiche oracle?
- 21. Primer per ricerca testo completo?
- 22. ricerca di testo in javascript?
- 23. Ricerca testo in PDF C#
- 24. Ricerca testo sfocata in python
- 25. Sostituisci una parola nel testo BLOB di MySQL
- 26. GAE Blobstore: carica blob insieme ad altri campi di testo
- 27. Aiutami a capire la differenza tra CLOB e BLOB in Oracle
- 28. MongoDB Ricerca di testo E più parole di ricerca
- 29. Ricerca di Windows - ricerca di testo completo in C#
- 30. Come convertire VARCHAR2 in BLOB all'interno di Oracle 11g PL/SQL dopo ORA-06502
@Olafur ha una buona risposta utile qui di seguito: http://stackoverflow.com/a/16301995/510711 – flob
Anche questo è sbagliato. Funziona solo con CLOBS che sono <32767 caratteri. Che è piuttosto piccolo instr e like si interromperanno dopo che devi usare dbms_lob.instr per cercare. –
@Olafur: la tua critica è falsa in quanto ho aggiornato la mia risposta per mostrare. –