Je suis nouveau ici, alors soyez gentil avec moi. J'ai le scénario suivant:
J'ai de nombreuses tables qui, par souci de simplicité, sont représentées dans une vue dans ma base de données MySQL. Mon problème est que j'ai besoin d'une valeur dans cette vue représentant s'il s'agit d'un type d'événement ou d'un autre (un simple booléen), que j'ai essayé de réaliser avec:
`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent`
Le résultat est représenté par int et est donc lu par Entity Framework. Le problème est que j'ai vraiment besoin d'une valeur de retour booléenne, que j'ai essayé d'obtenir avec:
CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent`
Cela a entraîné une erreur, une erreur qui ne m'est pas affichée dans MySQL Workbench (je ne reçois que l'ennuyeux "Vous avez une erreur dans ...").
Pouvez-vous m'aider s'il vous plaît?
J'ai essayé de le résoudre dans mon application, mais je préfère vraiment que cela soit résolu dans la base de données, car il sera utilisé par d'autres logiciels plus tard.
tinyint
. En aucun cas neIF
retourne untinyint
donc je ne vois pas comment cette réponse est correcte ou acceptée.Vous pouvez le faire de manière très simple, sans utiliser l'instruction IF () redondante:
la source
Vous pouvez également essayer la coercition booléenne classique:
SÉLECTIONNEZ PAS NON (peu importe);
La bonne chose à ce sujet est qu'il préserve naturellement les valeurs NULL, contrairement à la plupart des réponses ici.
Si vous souhaitez contraindre NULL à FALSE, faites
SELECT IFNULL (NOT NOT (any), FALSE);
la source
Vous pouvez également utiliser "CASE":
SELECT CASE WHEN yourField=testValue THEN 'TRUE' ELSE 'FALSE' END as boolFieldName
la source
C'est actuellement impossible.
BOOLEAN
type, (ou un vrai type de tableau .. ou un vrai type JSON). Il a un alias pourTINYINT
.'true' IS TRUE
et les1=1
deux reviennent en1
tant queint
.TINYINT
format.Autant que je sache, vous ne pouvez ni rétrograder un type, ni produire une minuscule dans un
SELECT
.Je suggère fortement de migrer vers PostgreSQL. C'est tellement moins terrifiant ... et libérateur.
la source
la source