我正在从SQL Server过渡到MySQL 5.1,并且似乎在尝试使用select语句创建表时遇到麻烦,因此该列有点。
理想情况下,以下方法将起作用:
CREATE TABLE myNewTable AS SELECT cast(myIntThatIsZeroOrOne as bit) AS myBit FROM myOldtable
但是,sql对转换有点不满意。我怎样才能告诉它选择一个int列(我知道它只有0和1s)?
你不能!
CAST和CONVERT仅可用于:
没有空间:BIT,BITINT,TINYINT,MEDIUMINT,BIGINT,SMALLINT,…
但是,您可以创建自己的函数cast_to_bit(n):
DELIMITER $$ CREATE FUNCTION cast_to_bit (N INT) RETURNS bit(1) BEGIN RETURN N; END
要自己尝试,可以创建具有以下转换的视图:
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)
…然后描述它!
DESCRIBE view_bit;
塔达!现在每个人都是位(1)!!!