2017-02-06 4 views
0

ich diese Abfrage in meiner MySQL-Datenbank bin mit allen Zeilen zu finden, wo my_column nicht leer ist:MySQL; leeres Feld scheint leer zu sein nicht

SELECT * FROM my_table WHERE my_column != ""; 

Leider ist viele Reihen bekommen angegebene wo my_column leer ist, kein Platz und keine Zeilenumbruch.

Warum das?

+0

Welcher Datentyp von 'my_column'? – denny

+0

Eine Randnotiz: Sie sollten einfache Standardanführungszeichen für Strings verwenden: 'WHERE my_column! = '''. Nachdem Sie den ANSI_QUOTES-Modus von MySQL festgelegt haben (oder zu einem anderen DBMS wechseln möchten), werden Abfragen mit doppelt zitierten Strings ungültig. –

Antwort

2

Sie müssen auch

SELECT * FROM my_table WHERE my_column != "" OR my_column IS NOT NULL 
+0

Das hat mein Problem gelöst: 'UPDATE my_table SET my_column = REPLACE (meine_Spalte, '\ r', '');'. – user7128548

3

Sie müssen auch für null Prüfwerte

SELECT * FROM my_table WHERE my_column != "" OR my_column IS NOT NULL 
+0

Das hat mein Problem gelöst: 'UPDATE my_table SET my_column = REPLACE (meine_Spalte, '\ r', '');'. – user7128548

1

ich diesen Code null betrachten musste laufen zuerst:

UPDATE my_table SET my_column = REPLACE(my_column,'\r','');

0

ohne Leere und Null-Werte sollten ausreichen. Wenn es immer noch nicht funktioniert, ist mein Vorschlag, die HEX-Funktion zu verwenden, um zu sehen, ob das Feld einige nicht druckbare Zeichen enthält:

select 
    my_column, 
    hex(my_column) 
from 
    my_table 
where 
    my_column is not null 
    and my_column != '' 

Sie könnten einige CR LF-Zeichen (0D und 0A jeweils) sehen.

+0

Das hat mein Problem gelöst: 'UPDATE my_table SET my_column = REPLACE (meine_Spalte, '\ r', '');'. – user7128548

+0

@ user7128548 Das bedeutet, dass Ihre "leeren" Spalten nicht wirklich leer waren, sondern ein oder mehrere CR-Zeichen enthielten. Mit HEX konnten Sie das Problem leicht beheben – fthiella