从 SQL Server 过渡到 MySQL 5.1 时,尝试使用位创建表时会出现挑战使用 select 语句的列。将整数列强制转换为位的直观方法(如以下示例所示)失败了:
CREATE TABLE myNewTable AS SELECT cast(myIntThatIsZeroOrOne as bit) AS myBit FROM myOldtable
MySQL 对强制转换为位的尝试表示反对,提出了一个问题:我们如何指示它将仅包含 0 和 1 的整数列视为一个位?
不幸的是,没有直接的解决方案。 MySQL 5.1 中的 CAST 和 CONVERT 函数仅支持转换为特定数据类型,不包括 BIT 和相关整数类型。
尽管有限制,但可以创建自定义函数函数来执行铸造。具体方法如下:
DELIMITER $$ CREATE FUNCTION cast_to_bit (N INT) RETURNS bit(1) BEGIN RETURN N; END $$
要确认cast_to_bit 函数的功能,可以创建一个视图:
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 检查视图会发现所有值都已转换为位(1)。
以上是如何在 MySQL 5.1 中成功地将 INT 转换为 BIT?的详细内容。更多信息请关注PHP中文网其他相关文章!