Soy nuevo aquí, así que sé amable conmigo. Tengo el siguiente escenario:
Tengo muchas tablas que, por simplicidad, están representadas en una Vista en mi base de datos MySQL. Mi problema es que necesito un valor en esta vista que represente si es un tipo de evento u otro (un booleano simple), que intenté lograr con:
`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent`
El resultado se representa como int, y Entity Framework lo lee. El problema es que realmente necesito un valor de retorno booleano, que intenté lograr con:
CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent`
Esto resultó en un error, uno que no me aparece en MySQL Workbench (solo recibo ese molesto "Tienes un error en ...").
¿Pueden ustedes ayudarme por favor?
Intenté resolverlo en mi aplicación, pero realmente prefiero que esto se resuelva en la base de datos, ya que será utilizado por otro software más adelante.
tinyint
. Bajo ninguna circunstanciaIF
devuelve un,tinyint
así que no puedo ver cómo esta respuesta es correcta o aceptada.Puede hacerlo de manera muy simple, sin el uso de la declaración redundante IF ():
fuente
También puedes probar la clásica coerción booleana:
SELECCIONE NO NO (lo que sea);
Lo bueno de esto es que, naturalmente, conserva NULL, mientras que la mayoría de las respuestas aquí no.
Si quieres obligar a NULL a FALSE, entonces haz
SELECCIONE IFNULL (NO NO (lo que sea), FALSO);
fuente
También puede usar "CASO":
SELECT CASE WHEN yourField=testValue THEN 'TRUE' ELSE 'FALSE' END as boolFieldName
fuente
Esto es actualmente imposible.
BOOLEAN
tipo real (o un tipo de matriz real ... o un tipo JSON real). Tiene un alias paraTINYINT
.'true' IS TRUE
y1=1
ambos regresan1
como unint
.TINYINT
formato.Por lo que puedo decir, no puedes degradar un tipo, ni producir una minúscula en un
SELECT
.Me altamente sugerir migrar a PostgreSQL. Es mucho menos aterrador ... y liberador.
fuente
fuente