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

时间:2012-06-22 18:50:14

标签: sql postgresql

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

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

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

有没有办法从select语句中指定结果的row,col?

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

4 个答案:

答案 0 :(得分:8)

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

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

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

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

This link显示上面的代码正确执行(感谢@Fahim Parkar


虽然,您可以将查询重新分解为不需要此语法,但这就是“将查询结果传递给函数”的方法。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

应该是

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

我相信,您的表格名称不是table

答案 3 :(得分:0)

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

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