Boolean i mysql?

Tags:    mysql

Jeg har lidt problemer med at få en rigtig boolean til at virke i mysql.
Kan det virkelig passe det skal være så svært?

Hvis jeg bruger boolean som out i en metode får jeg 0, og ikke false som boolean værdien skulle være.
Kunne læse mig til at der tidligere i 2009 er blevet brugt tinyint(1) som skulle være 0/1 så derfor er værdien af boolean'en korrekt, men hvis man bruger boolean forventer jeg ikke talværdien - men selve boolean'en.
Jeg kan godt se hvad der står i dokumentationen med at de er synonymer, men kan det virkeligt passe at siden 2009 har mysql ikke fået implementeret en korrekt boolean?

Min eneste løsning ind til videre er at bruge
Fold kodeboks ind/udSQL kode 




Indlæg senest redigeret d. 29.04.2013 23:04 af Bruger #17215
8 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 15 karma
Sorter efter stemmer Sorter efter dato
0 === false
alt andet === true

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 30.04.2013 11:51 af Bruger #2695
Det er rigtig nok at MySQL ikke supporterer Booleans i samme forstand som PHP.

Du kan dog eventuelt konverterer din returværdi til boolean på denne måde:

Fold kodeboks ind/udPHP kode 


Jeg har også læst, men ikke testet at du kan caste den til boolean.
Fold kodeboks ind/udPHP kode 




Det kommer lidt an på hvad du mener med "rigtig". I mange sprog ér 0 og 1 lig med false og true...C/C++ f.eks.
Det gør dem ikke mindre til boolske værdier, for de er enten 0 (false) eller også er de forskellig fra 0 (true).

Men vil du have noget som ligner mere, så kan du jo bruge en enum datatype, som internt vil være et tal, men som i søgninger og opdateringer vil være 'true' og 'false': http://dev.mysql.com/doc/refman/5.0/en/enum.html



Indlæg senest redigeret d. 01.05.2013 13:46 af Bruger #2695
Uden at skulle kunne sige det med 100% sikkerhed, så tror jeg altså at den er god nok. F.eks, ved MSSQL bruger man en data type der hedder bit til at repræsentere en boolean. Den kan være 0/1 altså false/true.



Eller
Fold kodeboks ind/udPHP kode 


tror jeg.



Tak for hjælpen, men det var en boolean jeg skulle bruge i SQL.
Det var en returværdi jeg skulle arbejde videre med i SQL.Jeg læste at i 2009 ville de lave en rigtig implementering af boolean, men det er så åbenbart aldrig sket.
Så nu er det blevet løst på en anden måde :)

Tak for input og hjælp
P.S. Koder .NET så koden ville se lidt anderledes ud ja, men ville være meget nemmere at håndtere backend - men er ikke muligt sådan som det er nu og ville hellere ikke være den løsning jeg ønsker for vil være et unødigt step på vejen.



Indlæg senest redigeret d. 01.05.2013 12:59 af Bruger #17215
Det kommer lidt an på hvad du mener med "rigtig". I mange sprog ér 0 og 1 lig med false og true...C/C++ f.eks.
Det gør dem ikke mindre til boolske værdier, for de er enten 0 (false) eller også er de forskellig fra 0 (true).

Men vil du have noget som ligner mere, så kan du jo bruge en enum datatype, som internt vil være et tal, men som i søgninger og opdateringer vil være 'true' og 'false': http://dev.mysql.com/doc/refman/5.0/en/enum.html


Kan man definere en enum i mysql?



Ja...følg mit link :-)



t