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

computed column definition mit if abfrage

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Snoopy1959, 28 Mai 2019.

  1. Snoopy1959

    Snoopy1959 Benutzer

    Hallo Zusammen,
    gerne möchte ich ein Feld Aktiv mit 1 automatisch belegen wenn in einem Feld B der Wert NULL ist.

    Wie geht das genau?
    If B is NULL Else 1

    Kann mir jemand ein Beispiel posten?

    Danke fürs Mitdenken.

    Gruss
    Snoopy
     
  2. ukulele

    ukulele Datenbank-Guru

    Soll das nur während der Abfrage passieren oder muss das tatsächlich in der Tabelle gespeichert werden? Ersteres wäre einfach ein CASE im Select, letzteres würde einen Trigger erforderlich machen.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    ... oder PostgreSQL 12 ;-)
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# create table snoopy (b int, aktiv bool generated always as (case when b is null then true else false end) stored);
    CREATE TABLE
    test=*#
    test=*#
    test=*# select * from snoopy ;
     b | aktiv
    ---+-------
    (0 rows)
    
    test=*# insert into snoopy (b) values (1);
    INSERT 0 1
    test=*# insert into snoopy (b) values (null);
    INSERT 0 1
    test=*# select * from snoopy ;
     b | aktiv
    ---+-------
     1 | f
       | t
    (2 rows)
    
    test=*#
    
     
  5. castorp

    castorp Datenbank-Guru

    Nein, SQL Server unterstützt "computed columns".
    z.B.
    Code:
    create table data
    (
      id integer primary key, 
      b integer,
      aktiv as (case when b is null then 1 else 0 end)
    );
    SQL Server 2017 | db<>fiddle
     
    ukulele und Walter gefällt das.
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