2011-01-25 11 views
9

Mam kolumnę w tabeli, która jest pusta. Dziwne jest to, że nie wydaje się być pusty lub pusty. Tak więc, jeśli mogę to zrobić:Oracle 10g: kolumna jest pusta, ale nie jest pusta lub pusty ciąg znaków

SELECT * 
    FROM TABLE 
WHERE column IS NULL 

... albo:

SELECT * 
    FROM TABLE 
WHERE column = '' 

mam nic. Myśli?

+2

Co to jest typ kolumny? –

+0

Opublikuj instrukcję "STWÓRZ TABELĘ" - jeśli kolumna jest typu CHAR, to spacje będą przydzielane dla liczby określonej w deklaracji CHAR. –

+1

Czy "WYBIERZ * Z TABELI GDZIE TRIM (kolumna) =" "zwraca coś? –

Odpowiedz

15

Wydanie to zapytanie:

SELECT column, DUMP(column, 1016) 
FROM table 

To pokażę dokładnie zawartość.

Powiązane: Oracle nie zezwala na puste ciągi; są one cicho konwertowane na NULL.

14

Może kolumna zawiera tylko spacje?

Próbowałeś

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

Prawie 100 tys. NAPRAWDĘ MIŁO! : D Gratulacje i dzięki za pomoc. Niech Bóg błogosławi ... –

3

Oracle Ma w zasadzie stałe rozdrażnienie że puste struny są traktowane jako null. Czy jesteś jednak pewien, że to pusty ciąg? Może to być postać niewidoczna w inny sposób, na przykład spacja lub tabulator/linebreak/linefeed/etc ... Co pokazuje długość łańcucha, gdy robisz select length(column) from table?

1

Spróbuj tego:

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

Jeśli kolumna nie jest VARCHAR2 ale CHAR(N) następnie wstawienie pustego ciągu jest usztywniony. Zobacz: what Tom Kyte tells about this

+0

Oto, co się stało ... Wygląda na to, że w kolumnie była 0-bajtowa postać. Używając funkcji rawtohex odkryłem to. Oto, co musiałem zrobić, aby przyciąć: przycinanie (chr (0) z kolumny) – Josh

Powiązane problemy