Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Spalte in boolean umwandeln

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von jetwork, 16 Dezember 2014.

  1. jetwork

    jetwork Fleissiger Benutzer

    Hallo Zusammen,


    In meiner MySQL-Datenbank habe ich eine Spalte welche für jeden Eintrag entweder ja oder nein beinhaltet. Ich möchte diese Spalte in Boolean umwandeln. Wie vermutet Jas sollen in wahr und Neins in falsch umgewandelt werden. Wie geht das überhaupt mit den Sql Abfragen?


    Danke im Voraus
     
  2. ukulele

    ukulele Datenbank-Guru

    Du legst eine neue Spalte an, machst ein UPDATE auf die Tabelle und setzt die neue Spalte = 1 wo die alte Spalte = Ja ist und das gleiche machst du für nein Werte. Dann löscht (DROP) du die alte Spalte.
     
    jetwork gefällt das.
  3. akretschmer

    akretschmer Datenbank-Guru

    In PostgreSQL ginge es so:

    Code:
    test=# create table jetwork (ja_nein text);
    CREATE TABLE
    Time: 2,444 ms
    test=*# insert into jetwork values ('ja');
    INSERT 0 1
    Time: 0,254 ms
    test=*# insert into jetwork values ('nein');
    INSERT 0 1
    Time: 0,152 ms
    test=*# insert into jetwork values ('vielleicht');
    INSERT 0 1
    Time: 0,127 ms
    test=*# alter table jetwork alter column ja_nein type bool using (case when ja_nein = 'ja' then true when ja_nein = 'nein' then false else null end);ALTER TABLE
    Time: 3,540 ms
    test=*# \d jetwork
      Table "public.jetwork"
     Column  |  Type  | Modifiers
    ---------+---------+-----------
     ja_nein | boolean |
    
    test=*# select * from jetwork ;
     ja_nein
    ---------
     t
     f
    
    (3 rows)
    
    Vielleicht geht es ja in MySQL ähnlich.
     
    jetwork gefällt das.
  4. akretschmer

    akretschmer Datenbank-Guru

    Ähm, hat MySQL überhaut solch einen Datentyp?
     
    jetwork gefällt das.
  5. jetwork

    jetwork Fleissiger Benutzer

    @akretschmer
    Ich wusste es nicht. Es gibt kein boolean. Wenn ich boolean über die phpMyAdmin oberfläche wähle bekomme ich tinyint(1).
    Das war mein eigentliches Problem :)
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Nein, nicht Deines, sondern von MySQL.
     
  7. jetwork

    jetwork Fleissiger Benutzer

    Ich habe nie erwartet dass ein boolean nicht existieren würde. Ich dachte es gibt sowieso ein Datentyp Boolean die ich nicht finden kann :).
    Wenn man Anfänger ist, denkt man leider immer so :D
     
  8. Distrilec

    Distrilec Datenbank-Guru

    In Oracle gibt es auch kein Boolean. Das hat einfach den grund das die Zahlen 1 und 0 aus binärer Sicht das selbe bedeuten wie TRUE und FALSE :)
     
    jetwork gefällt das.
  9. akretschmer

    akretschmer Datenbank-Guru

    Du must Dich nicht entschuldigen, Du denkst ja richtig. Nur ist MySQL offenbar nicht das richtige für Dich, Du wärst mit PostgreSQL besser bedient. Das hat sehr viele und sehr praktische Datentypen, von einfachen BOOL bis zu komplexen RANGE-Typen. Und es ist erweiterbar, so wie es PostGIS macht, welches ein-, zwei-, drei- und vierdimensionale Datentypen und dazu passende Funktionen und Indexe etc. definiert.
     
  10. akretschmer

    akretschmer Datenbank-Guru

    Das macht es weder besser noch ist es richtig.

    Code:
    mysql> create table bla(id int, b boolean);
    Query OK, 0 rows affected (0.15 sec)
    
    mysql> insert into bla values (1,0);
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into bla values (2,2);
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into bla values (3,3);
    Query OK, 1 row affected (0.00 sec)
    
    Das ist halt einfach nur falsch.
     
  11. Distrilec

    Distrilec Datenbank-Guru

    @jetwork Ich muss mich korrigieren. Es gibt den Datentyp Boolean schon... Allerdings nur im PL/SQL.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden