我正在用libpq訪問PostgreSQL服務器。我的查詢看起來像這樣(「非洲」是任何字符串,column_2
和column_3
都是有效的名稱和在psql提示符下執行時,這兩個查詢返回精):對PostgreSQL的查詢返回1列和0行的結果?
SELECT column_2
FROM mytable
WHERE column_1='Africa' AND column_2 IS NOT NULL
LIMIT 1;
我得到1行1列的結果。然後,一段時間後,我改變column_2
到column_3
和問題:
SELECT column_3
FROM mytable
WHERE column_1='Africa' AND column_3 IS NOT NULL
LIMIT 1;
現在PQnfields()
返回1不如預期,但PQntuples
返回0! 所以現在由於某種原因,有0行,這當然打破data = PQgetvalue(resuls, 0, 0)
什麼是可能的錯誤來源,爲什麼它甚至會返回1列,如果沒有行?
結果有1(或2,3,10 ...)列而沒有行的問題是什麼?這在postgres方面是完全有效的。 – 2014-10-02 15:05:21
如果沒有與'column_1 ='Africa'和column_3 IS NOT NULL'相匹配的數據,則返回0行。查詢本身定義了返回行的結構(列的數量和類型)。這個結構不依賴於返回的行數。 – 2014-10-02 15:07:25
@IgorRomanchenko是的,我基本上有一個錯字。我猜根據一些標準,PostgreSQL決定返回1列而不是0的查詢失敗? – user10607 2014-10-03 06:12:27