El ingenuo FOO = empty_clob()
se queja de tipos incompatibles. Probé con Google, pero (una vez más) tuve poco éxito en la búsqueda de ayuda con Oracle. Gracias.¿Cómo puedo comprobar si una columna es igual a empty_clob() en Oracle?
Respuesta
Si usted está tratando de hacer la comparación en PL/SQL, que sólo puede probar la igualdad como solución de Igor lo hace
SQL> ed
Wrote file afiedt.buf
1 DECLARE
2 dummy clob;
3 BEGIN
4 dummy := empty_clob();
5 IF dummy = empty_clob() THEN
6 dbms_output.put_line('Dummy is empty');
7 ELSE
8 dbms_output.put_line('Dummy is not empty');
9 END IF;
10* END;
SQL>/
Dummy is empty
PL/SQL procedure successfully completed.
Si está intentando hacer esto en SQL, sin embargo, necesita usar la función DBMS_LOB.COMPARE. Una columna LOB en una tabla es realmente un localizador LOB (es decir, un puntero), entonces lo que realmente importa es que el valor apuntado por el LOB sea comparable al valor apuntado por el localizador LOB devuelto por la función EMPTY_CLOB().
SQL> desc bar
Name Null? Type
----------------------------------------- -------- ------------------------
FOO CLOB
SQL> insert into bar values ('123');
1 row created.
SQL> insert into bar values(empty_clob());
1 row created.
SQL> insert into bar values(empty_clob());
1 row created.
SQL> ed
Wrote file afiedt.buf
1 select count(*)
2 from bar
3* where dbms_lob.compare(foo, empty_clob()) = 0
SQL>/
COUNT(*)
----------
2
SQL> ed
Wrote file afiedt.buf
1 select count(*)
2 from bar
3* where dbms_lob.compare(foo, empty_clob()) != 0
SQL>/
COUNT(*)
----------
1
algo como esto debería funcionar para la inicialización:
DECLARE
dummy clob;
dummy2 clob;
BEGIN
dummy := empty_clob();
IF dummy = empty_clob() THEN
dummy2 := dummy;
END IF;
END;
simplemente que desean para comprobar si hay un CLOB que no tenga cualquier longitud? Si bien no es exactamente lo que preguntas, ¿es básicamente lo mismo?
select *
from bar
where dbms_lob.getlength(foo) = 0;
Aquí está la prueba completa:
SQL> create table bar (foo clob);
Table created.
SQL> insert into bar values (empty_clob());
1 row created.
SQL> select *
2 from bar
3 where dbms_lob.getlength(foo) = 0;
FOO
--------------------------------------------------------------------------------
Esta es la solución actual, pero parece demasiado complicado para una tarea tan simple. –
Una forma sencilla de comprobar la CLOBs vacíos en SQLPLUS es convertir todo el CLOBS a varchar2 (utilizando la función TO_CHAR) antes de realizar la prueba:
SELECT *
FROM table1
WHERE TO_CHAR(table1.column1) IS NULL
Esta debería ser la respuesta aceptada –
- 1. ¿Cómo comprobar si mi cadena es igual a nulo?
- 2. MODIFICAR COLUMNA en oráculo - ¿Cómo comprobar si una columna es anulable antes de establecerse como anulable?
- 3. Comprobar si WPF DataRowView contiene una columna
- 4. cómo comprobar si un carácter es igual a la comilla doble en java
- 5. Compruebe si ID es igual a
- 6. Comprobar si una enumeración tiene un campo que es igual a una cadena
- 7. ¿Cómo puedo saber si una columna es auto_increment en mysql?
- 8. ¿Cómo comparo si una cadena no es igual a?
- 9. ¿Cómo verificar la columna es virtual en Oracle?
- 10. MENOR O IGUAL A en Oracle SQL
- 11. En Oracle, ¿es posible "insertar" una columna en una tabla?
- 12. iOS: Cómo comprobar si un valor "int" es igual a "cero"
- 13. cómo comprobar si java.lang.reflect.Type es una enumeración
- 14. si la tercera letra es igual a
- 15. ¿Cómo puedo probar si una columna existe en una tabla usando una declaración SQL?
- 16. ¿Cómo comprobar si las permutaciones tienen igual paridad?
- 17. Cómo consultar una columna CLOB en Oracle
- 18. php no es igual a no es igual, igual a
- 19. ¿Cómo puedo determinar si una columna es una columna de identidad en MSSQL 2000?
- 20. ¿Cómo comprobar si existe una columna antes de agregarla a una tabla existente en PL/SQL?
- 21. ¿Cómo puedo probar si una variable no es igual a dos valores?
- 22. ¿Cómo comprobar si un doble es nulo?
- 23. ¿Cómo puedo comprobar si una secuencia está vacía en F #?
- 24. Comprobar si un archivo es una imagen
- 25. ¿Cómo puedo comprobar si hay blanco en DataView.RowFilter
- 26. ¿Cómo puedo comprobar si el día actual es día laborable
- 27. ¿Cómo comprobar si un tipo es una cadena en C#?
- 28. ¿Cómo puedo comprobar si una variable en Javascript está inicializada?
- 29. ¿Cómo puedo saber si Java es Sun/Oracle/OpenJDK?
- 30. python: cómo comprobar si una línea es una línea vacía
¿Estas seguro que FOO es un CLOB y no un BLOB? Obtendría un error de tipo incompatible al comparar un CLOB con un BLOB. Tendría que comparar una columna BLOB con empty_blob(). –
FOO es definitivamente un CLOB, y el valor predeterminado es empty_clob() –