此语句不适用于PostgreSQL 8.2.4和PHP 5.2.17:
pg_query_params('SELECT $1', array(1));
ERROR: could not determine data type of parameter $1
足够公平。这是一个可能的解决方法:
pg_query_params('SELECT CAST($1 AS INTEGER)', array(1));
这是有道理的,因为我们明确了解数据类型。
但是下面的语句也适用,虽然它应该等同于第一个表达式:
pg_query_params('SELECT COALESCE($1)', array(1));
为什么呢? COALESCE
以某种方式修改$ 1的数据类型,或者保证一些简单的数据类型作为结果吗?
修改:The docs在COALESCE
的主题上相当简短。
答案 0 :(得分:2)
coalesce
总是返回第一个非空字符串,
如果提供了所有null
(在您的情况下,是$1
的未定义变量),则
它导致NULL
。
NULL
与undefined
原谅我的错误解释......
第一个示例,您尝试返回导致错误的未定义变量。
但是,在第三个示例中,您尝试返回NULL值(由coalesce返回),
没有更多未定义的变量,只返回一个NULL,这使得选择正常工作