Тип данных $ 1 по сравнению с объединением ( $ 1)

Этот оператор не работает с 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 или гарантирует какой-то простой тип данных в результате?

Изменить : Документы довольно краткие по теме COALESCE .

7
задан l0b0 24 August 2011 в 09:29
поделиться