Eu sou novo aqui, então seja gentil comigo. Eu tenho o seguinte cenário:
Eu tenho muitas tabelas que, por uma questão de simplicidade, são representadas em uma View no meu banco de dados MySQL. Meu problema é que preciso de um valor nessa exibição que represente se é um tipo de evento ou outro (um booleano simples), com o qual tentei obter:
`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent`
O resultado é representado como int e, portanto, é lido pelo Entity Framework. O problema é que eu realmente preciso de um valor de retorno booleano, com o qual tentei obter:
CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent`
Isso resultou em um erro, que não é exibido para mim no MySQL Workbench (eu recebo apenas o irritante "Você tem um erro em ...").
Vocês podem me ajudar?
Tentei resolvê-lo no meu aplicativo, mas prefiro isso resolvido no banco de dados, pois ele será usado por outro software posteriormente.
tinyint
. Under no circumstance doesIF
return atinyint
so I can't see how this answer is right or accepted.Você pode fazer isso de maneira muito simples, sem usar a instrução IF () redundante:
fonte
Você também pode tentar a coerção booleana clássica:
SELECIONE NÃO NÃO (tanto faz);
O bom disso é que preserva naturalmente NULLs, enquanto a maioria das respostas aqui não.
Se você deseja coagir NULL a FALSE, faça
SELECT IFNULL (NOT NOT (qualquer que seja), FALSE);
fonte
Você também pode usar "CASE":
SELECT CASE WHEN yourField=testValue THEN 'TRUE' ELSE 'FALSE' END as boolFieldName
fonte
Isso é atualmente impossível.
BOOLEAN
tipo real (ou um tipo de matriz real .. ou um tipo JSON real). Tem um alias paraTINYINT
.'true' IS TRUE
e1=1
ambos retornam1
como umint
.TINYINT
formato.Tanto quanto eu posso dizer, você não pode rebaixar um tipo, nem produzir um tinyint em um
SELECT
.Eu altamente sugerem a migração para PostgreSQL. É muito menos aterrorizante ... e libertador.
fonte
fonte