首页 > 解决方案 > 在视图中使用“CAST (1 AS BIT)”

问题描述

这里的 MySQL 菜鸟,来自多年的 MS SQL-Server 经验。
我正在创建一个带有BIT列的视图,我知道这是布尔/是-否列的正确类型。

BIT值是使用简单的内联IF语句计算的。

CREATE VIEW view2 AS
SELECT
    t.column2 ,
    IF ( t.column2 IS NULL ,
         CAST ( 1 AS BIT ) ,
         CAST ( 0 AS BIT ) ) AS isColumn2Null
FROM table2 t ;

但是当我尝试执行此操作时,出现错误:

Incorrect parameters in the call to stored function `CAST`

为什么 MySQL 在这里给出存储函数错误?
MySQL 是否认为我正在定义存储函数?
到底是怎么回事?

显然BITMySQL 中的类型与 SQL-Server 的工作方式不同。
我试过CAST ( 1 AS BIT ( 1 ) )了,但这只是给出了一个syntax error没有细节的泛型。

标签: mysqlsqlcastingbooleanstored-functions

解决方案


CAST()无法转换为BIT.

您可以通过将整数视为条件来模拟行为。

基本上改变这个:

CAST ( myval AS BIT )

到:

IF(myval, 1, 0)

推荐阅读