2011-01-25 31 views
9

Tengo una columna en una tabla que está en blanco. Lo extraño es que no parece ser nulo o una cadena vacía. Por lo tanto, si hago esto:Oracle 10g: la columna está en blanco, pero no es nula o es una cadena vacía

SELECT * 
    FROM TABLE 
WHERE column IS NULL 

... o:

SELECT * 
    FROM TABLE 
WHERE column = '' 

no consigo nada. ¿Pensamientos?

+2

¿Qué es el tipo de columna? –

+0

Publique la instrucción 'CREATE TABLE' - si la columna es CHAR, los caracteres de espacio se asignarán para el número designado en la declaración CHAR. –

+1

¿'SELECT * FROM TABLE WHERE TRIM (column) = ''' devuelve algo? –

Respuesta

15

Emisión esta consulta:

SELECT column, DUMP(column, 1016) 
FROM table 

Se va a mostrar el contenido exacto.

Relacionado: Oracle no permite cadenas vacías; se convierten silenciosamente al NULL.

14

¿Quizás la columna contiene solo espacios?

¿Usted intentó

 
select * 
from table 
where trim(column) is null 
+0

Casi 100K rep. ¡REALMENTE AGRADABLE! : D Felicidades y gracias por ayudarme. Dios bendiga ... –

3

Oracle tiene una molestia permanente que, básicamente, las cadenas vacías son tratados como nulo. Sin embargo, ¿estás seguro de que es una cadena vacía? Podría ser un carácter invisible, como un espacio o tab/linebreak/linefeed/etc ... ¿Qué muestra la longitud de la cadena cuando haces select length(column) from table?

1

Prueba esto:

SELECT *  
    FROM TABLE 
WHERE TRIM(column) IS NULL 
1

Si su columna no es VARCHAR2 pero CHAR(N) entonces la inserción de una cadena vacía se rellena. Consulte what Tom Kyte tells about this

+0

Aquí está lo que sucedió ... Parece que había un personaje de 0 bytes en la columna. Al usar la función rawtohex descubrí esto. Esto es lo que tuve que hacer para recortar: recorte (chr (0) de la columna) – Josh

Cuestiones relacionadas