madompa Skrevet 5. april 2007 Skrevet 5. april 2007 Jeg har et felt i en database som standard lagres uten innhold, men kan etterhvert endres til 1 med et annet script. Det smarteste hadde nok vært å latt den bli lagret med 0 fra starten, men jeg orker ikke forandre scriptet og alt som allerede er lagret i databasen. Iallefall, det jeg lurer på er; hvis jeg skal hente ut de som ikke har blitt satt til 1, hva gjør jeg da? Det virker ikke med where felt != 1, den henter kun ut felter som har innhold som ikke er 1. Prøvd med frem med ting lignende where felt = null eller where felt = '' uten hell. Noen som vet hva jeg skal bruke?
eXZire Skrevet 5. april 2007 Skrevet 5. april 2007 Såvidt jeg vet er tallfelt alltid 0 om de ikke er definert... så prøv where felt = 0
blackbrrd Skrevet 5. april 2007 Skrevet 5. april 2007 Nå har du ikke nevnt hvilken database du Du må bruke IS NULL eller IS NOT NULL hvis du skal sjekke om det felt er null/ikke null. Hvis du bruker en annen sammenligningsoperator vil du ALLTID få false. SELECT * FROM mytest WHERE testfelt <> 1 OR testfelt IS NULL henter ut alle rader som er null og alle radene som har en annen verdi enn 1. Hvis du skal ha ett felt som er true/false så hadde jeg brukt boolean som felt-type. Hvis du egentlig burde ha laget en anne tabell som dette feltet peker på så hadde jeg lagd den ekstra tabellen som sier hva 1 faktisk betyr. F.eks hvis feltet er betalingstype, og du nå har definert 1 til å være visa og null til å være ikke satt, så hadde det passet med en tabell som ser slik ut: create table paymenttype ( paymenttypeid serial primary key not null, description text ) la oss si at du i utgangspunktet hadde en tabell som innehold informasjon om transaksjonen, f.eks CREATE TABLE transaction ( transactionid serial primary key not null, id_contactid integer REFERENCES contact, id_paymenttypeid integer REFERENCES paymenttype, started timestamp, ended timestamp ) du må da også ha en tabell, contact, med primary key contactid...
madompa Skrevet 5. april 2007 Forfatter Skrevet 5. april 2007 Nå har du ikke nevnt hvilken database du Du må bruke IS NULL eller IS NOT NULL hvis du skal sjekke om det felt er null/ikke null. Hvis du bruker en annen sammenligningsoperator vil du ALLTID få false. SELECT * FROM mytest WHERE testfelt <> 1 OR testfelt IS NULL henter ut alle rader som er null og alle radene som har en annen verdi enn 1. Hvis du skal ha ett felt som er true/false så hadde jeg brukt boolean som felt-type. Hvis du egentlig burde ha laget en anne tabell som dette feltet peker på så hadde jeg lagd den ekstra tabellen som sier hva 1 faktisk betyr. F.eks hvis feltet er betalingstype, og du nå har definert 1 til å være visa og null til å være ikke satt, så hadde det passet med en tabell som ser slik ut: create table paymenttype ( paymenttypeid serial primary key not null, description text ) la oss si at du i utgangspunktet hadde en tabell som innehold informasjon om transaksjonen, f.eks CREATE TABLE transaction ( transactionid serial primary key not null, id_contactid integer REFERENCES contact, id_paymenttypeid integer REFERENCES paymenttype, started timestamp, ended timestamp ) du må da også ha en tabell, contact, med primary key contactid... 8312791[/snapback] Beklager, det var iallefall MySQL. Takk, det funket iallefall på scriptet mitt Grunnen til at det ble som det ble, var at jeg har lagt til det feltet i tabellen i etterkant, og jeg orker ikke å begynne å sette meg inn i gammel kode og gjøre om slik at ting blir lagret med 0 i det feltet.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå