Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso lanciare un int su un po' in MySQL 5.1?

Non puoi!

CAST e CONVERT funzionano solo su:

  • BINARIO[(N)]
  • CHAR[(N)]
  • DATA
  • DATA ORA
  • DECIMAL[(M[,D])]
  • FIRMATO [INTERO]
  • TEMPO
  • UNSIGNED [INTERO]

Nessuno spazio per:BIT, BITINT, TINYINT, MEDIUMINT, BIGINT, SMALLINT, ...

Tuttavia, puoi creare la tua funzione cast_to_bit(n):

DELIMITER $$

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

Per provarlo tu stesso, puoi creare una vista con diverse conversioni come:

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 poi descrivilo!

DESCRIBE view_bit;

Ta-dah!! Tutti sono bit(1) ora!!!