Postgresql cast(作为smallint为TRUE)是可以的,但是cast(作为smallint为TRUE)是错误的
我有一个只有一列的表,它是布尔类型的。 这些是可以的:Postgresql cast(作为smallint为TRUE)是可以的,但是cast(作为smallint为TRUE)是错误的,postgresql,Postgresql,我有一个只有一列的表,它是布尔类型的。 这些是可以的: insert into bools values('true'); insert into bools values('t'); insert into bools values(TRUE); 这没关系: select cast(TRUE as smallint) 但这些都是错误的: select cast('true' as smallint) select cast('t' as smallint) 为什么?Postgres可以猜
insert into bools values('true');
insert into bools values('t');
insert into bools values(TRUE);
这没关系:
select cast(TRUE as smallint)
但这些都是错误的:
select cast('true' as smallint)
select cast('t' as smallint)
为什么?Postgres可以猜测您将“t”、“true”1设置为布尔值时的含义,但无法预见您尝试将“t”用作smallint时的含义。我不推荐这种方法,但你可能想要的是
选择“t”::布尔::int
或
什么数字是'true'或't'?当我这样做时,您可能会使用
select cast('true'为布尔值)::int
选择cast(true为smallint)我收到一个错误:“错误:无法将类型布尔值转换为smallint”。例如:。
t=# select cast(cast('t' as boolean) as int);
int4
------
1
(1 row)