L'ingenuo FOO = empty_clob()
si lamenta di tipi incompatibili. Ho provato Google, ma (ancora una volta) ha avuto poco successo alla ricerca di aiuto con Oracle. Grazie.Come verificare se una colonna è uguale a empty_clob() in Oracle?
risposta
Se si sta cercando di fare il confronto in PL/SQL, si può solo testare l'uguaglianza come soluzione di Igor non
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.
Se stai provando a farlo in SQL, hai bisogno di usare la funzione DBMS_LOB.COMPARE. Una colonna LOB in una tabella è in realtà un locator LOB (cioè un puntatore), quindi quello che interessa davvero è che il valore indicato dal LOB è paragonabile al valore indicato dal localizzatore LOB restituito dalla funzione 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
qualcosa come questo dovrebbe funzionare per l'inizializzazione:
DECLARE
dummy clob;
dummy2 clob;
BEGIN
dummy := empty_clob();
IF dummy = empty_clob() THEN
dummy2 := dummy;
END IF;
END;
Stai semplicemente desideroso di verificare la presenza di un CLOB che non ha certo periodo? Anche se non è esattamente quello che chiedi, è fondamentalmente la stessa cosa?
select *
from bar
where dbms_lob.getlength(foo) = 0;
Ecco la prova 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
--------------------------------------------------------------------------------
Questa è la soluzione corrente, ma sembra eccessivamente complicata per un'attività così semplice. –
Un modo semplice per testare CLOB vuoti in SQLplus è quello di convertire tutte le CLOB a VARCHAR2 (utilizzando la funzione TO_CHAR) prima di eseguire il test:
SELECT *
FROM table1
WHERE TO_CHAR(table1.column1) IS NULL
Questa dovrebbe essere la risposta accettata –
- 1. Come verificare se una data è uguale a ieri?
- 2. MODIFY COLUMN in oracle - Come verificare se una colonna è annullabile prima di impostare su null?
- 3. Come verificare se una variabile è uguale a una stringa o un'altra stringa?
- 4. INFERIORE O UGUALE A in Oracle SQL
- 5. Verifica se ID è uguale a
- 6. Come verificare se la locale corrente è uguale a una stringa
- 7. Verificare se una stringa è uguale a una delle stringhe (con espressioni regolari)
- 8. SQL: verificare se una colonna incrementa automaticamente
- 9. In Oracle, è possibile "inserire" una colonna in una tabella?
- 10. come verificare se esiste una colonna in un datatable
- 11. Come si verifica se un doppio è uguale a NaN?
- 12. Come posso verificare se esiste una colonna in SQL Server?
- 13. Come interrogare una colonna CLOB in Oracle
- 14. Come verificare se un oggetto di database in Oracle è una tabella o una vista
- 15. come verificare se un carattere è uguale a virgolette doppie in java
- 16. php non è uguale a non è uguale, uguale a
- 17. Filtra se il valore della colonna è uguale a una lista nella scintilla
- 18. Controllare se la stringa è uguale a virgolette
- 19. Come posso verificare se esiste una colonna in una tabella utilizzando un'istruzione SQL
- 20. Modificare una colonna in NULL - Oracle
- 21. Come faccio a verificare se una variabile è stata inizializzata
- 22. Come verificare se una NSWindow è visibile
- 23. Come verificare se una stringa è bilanciata?
- 24. Come verificare se una struttura è inizializzata?
- 25. Come faccio a verificare se un carattere è una vocale?
- 26. Come verificare se un modello ha una determinata colonna/attributo?
- 27. Java è uguale a una classe. == uguale a .equals
- 28. Come verificare se un parametro è fornito a una funzione?
- 29. Come verificare se tutti i campi sono univoci in oracle?
- 30. Scoprire se una colonna NON È NULLA
Sei sicuro che FOO è un CLOB e non un BLOB? Si otterrebbe un errore di tipo incompatibile confrontando un CLOB con un BLOB: sarà necessario confrontare una colonna BLOB con empty_blob(). –
FOO è sicuramente un CLOB e il valore predefinito è empty_clob() –