tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
646
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nappi Nappi ist offline Mitglied Bronze
    Registriert seit
    Jun 2004
    Beiträge
    30
    Hallo.

    Ich möchte alle Datensätze einer Tabelle durch einen SQL Befehl danach abfragen ob ein bestimmtes Feld dieses Datensatzes leer ist. Falls es leer ist soll ein "-" reingeschrieben werden. Wenn etwas drin steht soll nix passieren. Das ganze braucht kein php skript oder so sein. Ein einfacher SQL Befehl den ich in phpMyAdmin eintragen kann würde mir schon helfen.

    Danke
     

  2. #2
    Avatar von Thomas Pinske
    Thomas Pinske Thomas Pinske ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Bingen (RLP)
    Beiträge
    56
    Hallo Nappi,

    Wenn ein Feld leer ist, hat es den Wert NULL. Diesen kann man als Bedingung für eine UPDATE Anweisung verwenden:

    Code :
    1
    
    UPDATE tabelle SET feld="-" WHERE feld=NULL

    Grüße Thomas
     

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    "= null" bringt nichts...

    http://www.rent-a-database.de/mysql/mysql-167.html

    du musst " is null" Verwenden...

    Gruß Tom
     

  4. #4
    Nappi Nappi ist offline Mitglied Bronze
    Registriert seit
    Jun 2004
    Beiträge
    30
    Danke für die rasche hilfe

    Nappi
     

  5. #5
    Nappi Nappi ist offline Mitglied Bronze
    Registriert seit
    Jun 2004
    Beiträge
    30
    wenn ich diese Zeile eingebe

    Code :
    1
    
    UPDATE tabelle SET feld="-" WHERE feld=IS NULL

    kommt leider das dabei raus:

    You have an error in your SQL syntax near 'IS NULL' at line 1

    Man sollte meinen ich hätte die richtigen Stellen geändert

    Was hab ich falsch gemacht?

    Nappi
     

  6. #6
    KristophS KristophS ist offline Mitglied Brilliant
    Registriert seit
    Apr 2004
    Ort
    Duisburg
    Beiträge
    778
    Also kucke mal in der (my)Sql Dokumentation dann findest du folgenden LInk:
    http://dev.mysql.com/doc/mysql/de/Co...s.html#IDX1094
    So wie es aussieht musst du es so gestalten:
    Code :
    1
    2
    
    WHERE
              feld IS NULL
    Achja laut Dokumentation ist NULL = IS NULL ...
    Und für die die das Linkklicken zu anstrengend ist , steht das in der Dokumentation:
    IS NULL
    IS NOT NULL
    Testet, ob eine Wert NULL ist oder nicht:

    mysql> select 1 IS NULL, 0 IS NULL, NULL IS NULL;
    -> 0 0 1
    mysql> select 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;
    -> 1 1 0
    Geändert von KristophS (07.06.04 um 19:13 Uhr)
     

  7. #7
    Nappi Nappi ist offline Mitglied Bronze
    Registriert seit
    Jun 2004
    Beiträge
    30
    Also jetzt macht er es ohne fehler Meldung aber es ändert sich nichts!

    Selbst wenn in einem Feld nichts ist macht er keinen Eintrag.
    Eigendlich sollte doch ein " - " eingetragen werden aber ich bekomme nur die meldung das 0 Datensätze betroffen sind

    das ist zB der
    Code :
    1
    
    UPDATE users SET nick="-" WHERE nick IS NULL;

    und das kommt dabei raus
    Betroffene Datensätze: 0 (die Abfrage dauerte 0.0005 sek)
    Worin liegt mein Fehler?

    Nappi
     

  8. #8
    Avatar von Thomas Pinske
    Thomas Pinske Thomas Pinske ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Ort
    Bingen (RLP)
    Beiträge
    56
    Hallo Nappi,

    Steht in dem Feld vielleicht eine leere Zeichenkette drin? Normalerweise unterscheiden Datenbanken zwischen keinen Daten (NULL) und einer leeren Zeichenkette.

    Probier mal:
    Code :
    1
    
    UPDATE users SET nick="-" WHERE nick = "";

    Grüße Thomas
     

  9. #9
    Nappi Nappi ist offline Mitglied Bronze
    Registriert seit
    Jun 2004
    Beiträge
    30
    Das habe ich auch schon versucht hier das Ergebnis:

    UPDATE users SET nick = "-" WHERE nick = "";# MySQL lieferte ein leeres Resultat zurück (d.h. null Zeilen).
    oder:

    UPDATE users SET nick = "-" WHERE nick IS NULL ;# MySQL lieferte ein leeres Resultat zurück (d.h. null Zeilen).
    Nappi
     

  10. #10
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo Schau dir diese Befehlsabfolgen mal an:

    E:\mysql-4.1.1a-alpha\bin>mysql
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 1 to server version: 4.1.1a-alpha-nt

    mysql> use test;
    Database changed

    mysql> create table tblTest(id int, text varchar(30));
    Query OK, 0 rows affected (0.21 sec)

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    insert into tblTest values (1,'Test1');
    insert into tblTest values (2,'Test2');
    insert into tblTest values (3,'Test3');
    insert into tblTest values (4,'Test4');
    insert into tblTest values (5,'Test5');
    insert into tblTest (id) values (6);
    insert into tblTest (id) values (7);
    insert into tblTest (id) values (8);
    insert into tblTest (id) values (9);
    insert into tblTest (id) values (10);
    insert into tblTest (id,text) values (11,'');


    mysql> select * from tblTest;
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    +------+-------+
    | id   | text  |
    +------+-------+
    |    1 | Test1 |
    |    2 | Test2 |
    |    3 | Test3 |
    |    4 | Test4 |
    |    5 | Test5 |
    |    6 | NULL  |
    |    7 | NULL  |
    |    8 | NULL  |
    |    9 | NULL  |
    |   10 | NULL  |
    |   11 |       |
    |   12 |       |
    +------+-------+
    12 rows in set (0.01 sec)


    mysql> select * from tblTest where text is null;
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    +------+------+
    | id   | text |
    +------+------+
    |    6 | NULL |
    |    7 | NULL |
    |    8 | NULL |
    |    9 | NULL |
    |   10 | NULL |
    +------+------+
    5 rows in set (0.03 sec)
    insert into tblTest (id,text) values (12,' ');

    mysql> select * from tblTest where text="";
    Code :
    1
    2
    3
    4
    5
    6
    
    +------+------+
    | id   | text |
    +------+------+
    |   11 |      |
    |   12 |      |
    +------+------+
    2 rows in set (0.00 sec)

    mysql> select * from tblTest where text is null || text = "";
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    +------+------+
    | id   | text |
    +------+------+
    |    6 | NULL |
    |    7 | NULL |
    |    8 | NULL |
    |    9 | NULL |
    |   10 | NULL |
    |   11 |      |
    |   12 |      |
    +------+------+
    7 rows in set (0.08 sec)

    Gruß Tom
     

Ähnliche Themen

  1. Wie kann man sowas realisieren ?
    Von Soapp im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 30.10.06, 23:10
  2. Kann man so etwas realisieren?
    Von chilimaus im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 21.02.06, 14:39
  3. Wie kann man dies Realisieren?
    Von Midgardschlange im Forum Photoshop
    Antworten: 6
    Letzter Beitrag: 24.02.05, 20:54
  4. wie kann ich es realisieren?
    Von dmaye im Forum Photoshop
    Antworten: 17
    Letzter Beitrag: 09.05.04, 21:28
  5. Kann man das mit Templates realisieren?
    Von Alex2xm im Forum PHP
    Antworten: 3
    Letzter Beitrag: 16.10.03, 01:30