Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso converter um int em um bit no MySQL 5.1?


Você não pode!

CAST e CONVERT só funcionam para:
  • BINÁRIO[(N)]
  • CHAR[(N)]
  • DATA
  • DATATIME
  • DECIMAL[(M[,D])]
  • ASSINADO [INTEIRO]
  • HORA
  • NÃO ASSINADO [INTEIRO]

Não há espaço para:BIT, BITINT, TINYINT, MEDIUMINT, BIGINT, SMALLINT, ...

No entanto, você pode criar sua própria função cast_to_bit(n):
DELIMITER $$

CREATE FUNCTION cast_to_bit (N INT) RETURNS bit(1)
BEGIN
    RETURN N;
END

Para experimentar você mesmo, você pode criar uma visualização com várias conversões como:
CREATE VIEW view_bit AS
    SELECT
        cast_to_bit(0),
        cast_to_bit(1),
        cast_to_bit(FALSE),
        cast_to_bit(TRUE),
        cast_to_bit(b'0'),
        cast_to_bit(b'1'),
        cast_to_bit(2=3),
        cast_to_bit(2=2)

... e depois descrevê-lo!
DESCRIBE view_bit;

Surpresa!! Todo mundo é bit(1) agora!!!