Base de conocimiento

Creado por eth0
2011-05-18
14:46:28

Categorías
Etiquetas

Ordenación usando un campo CLOB en Oracle

En ocasiones podemos necesitar ordenar una tabla por el contenido de un campo de tipo CLOB. Sin embargo, nos encontramos con que Oracle no permite usar directamente este tipo de campos en la cláusula ORDER BY y tampoco nos provee de ninguna función para convertir dichos valores a VARCHAR2.

No obstante, podemos recurrir a las funciones contenidas en el paquete dbms_lob para extraer parte del contenido del campo como un valor VARCHAR2 y así poder ordenar por dicho valor.

El truco está en usar la función dbms_lob.substr() para extraer los primeros N caracteres del campo y ordenar por el valor obtenido, de esta forma:

SELECT * FROM tabla ORDER BY dbms_lob.SUBSTR(campo, 50, 1);

En el ejemplo anterior ordenaríamos mediante los primeros 50 caracteres del campo, que debería ser suficiente en la mayoría de los casos.