¿Es posible buscar a través de blob text utilizando sql statement? Puedo seleccionar * de $ table donde f1 como '% foo%' si f1 es varchar, ¿qué tal si f1 es un blob? Cualquier contraparte para esto?oracle blob text search
Respuesta
Si está almacenando texto sin formato, debe ser un CLOB, no un BLOB, y aún puede consultar utilizando LIKE. Un BLOB contiene datos binarios de los que Oracle no conoce la estructura, por lo que no puede buscarlos de esta manera.
Esto funciona para CLOBs de cualquier longitud (al menos en 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
Tenga en cuenta que sólo hay una 'z' en el que CLOB 6554401 bytes - justo en el centro de la misma:
SQL> select instr(c, 'z') from t1;
INSTR(C,'Z')
------------
3276701
Si se trata de un documento de Word o PDF, mira en Oracle Text.
Esto es muy posible y fácil de hacer.
Utilice simplemente dbms_lob.instr conjuntamente con utl_raw.cast_to_raw
Así, en su caso, si T1 es un BLOB el selectivo se vería así:
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
;
++ Cuando la base de datos no es suya, decir que el esquema es incorrecto no es de ayuda. ¡Muchas gracias por resucitar y responder la pregunta! – Decker
Es lento, pero funciona, ¡Gracias! –
esto realmente me ayudó gracias! –
- 1. Oracle BLOB vs VARCHAR
- 2. SQL Server Weighted Full Text Search
- 3. overcomplicated JDBC de Oracle BLOB
- 4. SQL Server 2008 Full Text Search (FTS) versus Lucene.NET
- 5. ¿Cómo convierto de BLOB a TEXT en MySQL?
- 6. mysql diferencia de tipo de datos BLOB y TEXT
- 7. ¿Cuánta diferencia hace BLOB o TEXT en comparación con VARCHAR()?
- 8. Oracle Text Criteria Query en JPA
- 9. Cómo obtengo contenido textual de BLOB en Oracle SQL
- 10. ¿Cómo selecciono parte de un campo BLOB en Oracle?
- 11. Oracle Blob como img src en la página de PHP
- 12. Cómo escribir/actualizar Oracle blob de manera confiable?
- 13. ¿Cómo edito BLOB (que contiene JSON) en Oracle SQL Developer?
- 14. Insertar blob en la base de datos Oracle con C#
- 15. TreeView search
- 16. retreving long text (CLOB) usando CFQuery
- 17. Text Search for Rails 3 en Heroku - Texticle vs acts_as_tsearch vs acts_as_indexed
- 18. Plantilla de filtro personalizado de datos dinámicos de Text Search de ASP.NET
- 19. ¿Cómo puedo agregar/concatenar datos BLOB a una columna BLOB usando el comando SQL UPDATE en ORACLE
- 20. Proximity Search
- 21. stackoverflow search api
- 22. ¿Cuáles son las diferencias entre los tipos de datos BLOB y TEXT en MySQL?
- 23. Cómo convertir existir Blob Blob a PageBlob
- 24. jQuery .search() para cualquier cadena
- 25. Intentando leer un blob
- 26. Sphinx PHP search
- 27. Global Search En Android
- 28. SVN Repository Search
- 29. Mercurial repo search
- 30. Breadth First Search - Java
@Olafur tiene una buena respuesta es útil a continuación: http://stackoverflow.com/a/16301995/510711 – flob
Esto también es incorrecto. Solo funciona para CLOBS que son <32767 caracteres. Que es bastante pequeño instr y like se romperán después de eso, tienes que usar dbms_lob.instr para buscar. –
@Olafur: su crítica es falsa ya que he actualizado mi respuesta para mostrarla. –