Ich bin neu hier, also sei nett zu mir. Ich habe folgendes Szenario:
Ich habe viele Tabellen, die der Einfachheit halber in einer Ansicht in meiner MySQL-Datenbank dargestellt werden. Mein Problem ist, dass ich in dieser Ansicht einen Wert brauche, der angibt, ob es sich um eine oder eine andere Art von Ereignis handelt (ein einfacher Boolescher Wert), den ich versucht habe, zu erreichen mit:
`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent`
Das Ergebnis wird als int dargestellt und von Entity Framework gelesen. Das Problem ist, dass ich wirklich einen booleschen Rückgabewert brauche, den ich versucht habe mit:
CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent`
Dies führte zu einem Fehler, der mir in MySQL Workbench nicht angezeigt wird (ich erhalte nur das nervige "Sie haben einen Fehler in ...").
Könnt ihr mir bitte helfen?
Es wurde versucht, es in meiner Anwendung zu lösen, aber ich bevorzuge es wirklich, wenn es in der Datenbank gelöst wird, da es später von einer anderen Software verwendet wird.
tinyint
. KeinesfallsIF
kehrt ein zurück,tinyint
sodass ich nicht sehen kann, wie diese Antwort richtig ist oder akzeptiert wird.Sie können dies ganz einfach tun, ohne die redundante IF () -Anweisung zu verwenden:
quelle
Sie können auch den klassischen booleschen Zwang ausprobieren:
SELECT NOT NOT (was auch immer);
Das Gute daran ist, dass es auf natürliche Weise NULL-Werte beibehält, während die meisten Antworten dies nicht tun.
Wenn Sie NULL zu FALSE zwingen möchten, dann tun Sie dies
SELECT IFNULL (NOT NOT (was auch immer), FALSE);
quelle
Sie können auch "CASE" verwenden:
SELECT CASE WHEN yourField=testValue THEN 'TRUE' ELSE 'FALSE' END as boolFieldName
quelle
Dies ist derzeit nicht möglich.
BOOLEAN
Typ (oder einen echten Array-Typ .. oder einen echten JSON-Typ). Es hat einen Alias fürTINYINT
.'true' IS TRUE
und1=1
beide kehren1
als zurückint
.TINYINT
Format zur Verfügung.Soweit ich Ihnen sagen kann, können Sie weder einen Typ herabstufen, noch eine winzige Zahl in einem erzeugen
SELECT
.Ich würde dringend empfehlen, auf PostgreSQL zu migrieren. Es ist so viel weniger erschreckend ... und befreiend.
quelle
quelle