Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql cast(作为smallint为TRUE)是可以的,但是cast(作为smallint为TRUE)是错误的_Postgresql - Fatal编程技术网

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)