首页  >  文章  >  数据库  >  如何在 MySQL 5.1 中成功地将 INT 转换为 BIT?

如何在 MySQL 5.1 中成功地将 INT 转换为 BIT?

Linda Hamilton
Linda Hamilton原创
2024-10-28 20:49:30503浏览

How to Successfully Cast INT to BIT in MySQL 5.1?

在 MySQL 5.1 中将 INT 转换为 BIT:一项不可能完成的任务

从 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn