在我的MariaDB视图中,坚持让视图的属性显示为bit(1)

hm2xizp9  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(42)

我想在MariaDB视图中添加一个计算列,以返回true/false。然而,无论我做什么以及如何转换它,它的数据类型始终是int。
举个例子,考虑这个观点:

create view Sample
as
select 1 as IsShipped

字符串
当你看这个结构时,它是int
x1c 0d1x的数据
现在我想强制该列为布尔值:

alter view Sample
as
select cast(1 as bit) as IsShipped


它无法编译。它给我这个错误:
查询错误(1064):在第3行的“bit(1)”附近发现错误,因为IsShipped
如果使用if

alter view Sample
as
select if(1,true,false) AS IsShipped


它仍然具有int数据类型。
我应该怎么做?我希望它的数据类型变成bit(1)

8zzbczxx

8zzbczxx1#

你不能被咬。
来自docs:
类型可以是以下值之一:

BINARY
CHAR
DATE
DATETIME
DECIMAL[(M[,D])]
DOUBLE
FLOAT (from MariaDB 10.4.5)
INTEGER
Short for SIGNED INTEGER
SIGNED [INTEGER]
UNSIGNED [INTEGER]
TIME
VARCHAR (in Oracle mode, from MariaDB 10.3)

字符串
但是,您可以创建自己的函数cast_to_bit(n):

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


然后你可以像这样改变视图:

ALTER VIEW Sample
AS
SELECT cast_to_bit(1) as IsShipped;


然后,如果你描述它:DESCRIBE Sample;,你会得到:

Field    |Type  |Null|Key|Default|Extra|
---------+------+----+---+-------+-----+
IsShipped|bit(1)|YES |   |       |     |

相关问题