我正在尝试创建一个在 MariaDB 中显示为
BIT(1)
类型的视图。我尝试了这个答案并执行了以下操作:
CREATE FUNCTION CastToBit(N INT) RETURNS bit(1)
BEGIN
RETURN N;
END
问题是,每当我尝试有条件地使用它时,由于某种原因它总是返回 48 + 预期的值。
SELECT
IF(FALSE, CastToBit(1), CastToBit(0)) AS `false`,
IF(TRUE, CastToBit(1), CastToBit(0)) AS `true`
不知何故,这返回:
假 | 真实 |
---|---|
48 | 49 |
即使
BIT(1)
根本无法存储48和49!
如果我删除条件,它就会起作用:
SELECT CastToBit(0) AS `false`, CastToBit(1) AS `true`
假 | 真实 |
---|---|
0 | 1 |
我也尝试过使用
CASE / ELSE
,但没有成功。
如何在条件语句中显示正确的数字?
Myriadb,在您的情况下自动转换为“最佳”类型 ascii
因此要使其无效,您需要再次转换
但我无法理解你的功能的必要性
CREATE FUNCTION CastToBit(N INT) RETURNS bit(1)
BEGIN
RETURN N;
END
SELECT
IF(FALSE, BIN(CastToBit(1)), BIN(CastToBit(0))) AS `false`,
IF(TRUE, BIN(CastToBit(1)), BIN(CastToBit(0))) AS `true`
假 | 真实 |
---|---|
0 | 1 |