2016-03-04 49 views
-1

我使用PostgreSQL和試圖加入兩個表上的兩個字段兩個表:加入兩個字段

SELECT a.high, a.low, a.stname, a.zipcode, b.bhs, b.street_numb, b.street, b.address, b.zipcode 
FROM bin a 
JOIN zp b 
ON (a.stname = b.street) and (a.low = b.street_numb); 

不過,我收到以下錯誤:

ERROR: operator does not exist: character varying = integer 
LINE 4: on (a.stname = b.street) and (a.low = b.street_numb); 
             ^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 

我怎麼會是能夠得到正確的結果?

+1

'您可能需要添加明確的類型轉換.' –

回答

0

您要求Postgres比較兩種不同類型,characterinteger。如果你確定a.low將是數字,

CAST (a.low AS INT) = b.street_numb 
+0

謝謝,這是有幫助的。我決定改變表格,並重新運行查詢。 – user3062459

0

ALTER TABLE ZP ALTER COLUMN street_numb型性格(5);

+0

運行這個alter table代碼之後,我刷新了數據庫並重新運行了最初的查詢(頁面頂部),並且完美運行。問題是低字段是一個字符,而street_numb是一個整數。使用alter table我將street_numb轉換爲字符。這允許原始查詢無誤地運行。 – user3062459