在函数中使用查询结果(postgres 8.3)



我正在尝试做这样的事情:

select char_length(select text_field from table where key = 1)

我认为这是行不通的,因为查询的返回类型是表,而不是字符串或文本变量。

有没有办法从选择语句中指定结果的行,列?

编辑:我忽略了提到,char_length是一个函数。

将查询结果传递给函数时,只需将查询括在括号中:

select char_length((select text_field from table where key = 1));

外部括号集用于函数,内部括号集将查询转换为结果。

此语法并非特定于 postgres,它适用于所有 SQL 服务器。

此链接显示上述代码正确执行(感谢@Fahim Parkar)


虽然,您可以重构查询以不需要此语法,但这就是"将查询结果传递给函数"的方式。

select char_length(text_field) from "table" where key = 1

假设键是主键或唯一键,下面的第一个示例将起作用。仅当子查询仅返回 1 行时,它才有效。第二个示例适用于 1 行或多行。

select char_length((select text_field from table where key = 1));
select char_length(text_field) from table where key = 1;

它应该是

select char_length(text_field) from "table" where key = 1

我也相信,你的表名不table.

最新更新