我們正在使用 PostgreSQL 11 并且有一個來自 Redmine 資料庫的查詢。這是一個在 MySQL 8 中運行良好的查詢,但在 PostgreSQL 上我們得到一個錯誤。
SELECT fixed_version_id
FROM issues WHERE
((issues.fixed_version_id IN ('current_version','2')));
錯誤:整數的無效輸入語法:“current_version”第 1 行:...d FROM issues WHERE ((issues.fixed_version_id IN ('current_v...
我知道 fixed_version_id 是一個 int 并且我正在查詢字串。但是,其他 SQL(如 MySQL 8)是否可以執行此操作,并且它實際上會回傳值。但是在 PostgreSQL 中我們得到一個錯誤。不確定我們是否設定錯誤或者這只是 PostgreSQL 的作業方式?
任何幫助將不勝感激,謝謝。
我們運行了這個查詢
SELECT fixed_version_id
FROM issues
WHERE ((issues.fixed_version_id IN ('current_version','2')));
我們期望不會出錯。
uj5u.com熱心網友回復:
SQL 是一種緊密型別的語言(似乎 MySql 不符合標準)。唯一的更正是使用正確的型別 - 在本例中為整數。但是您可以將整數“投射”到文本并進行比較。
SQL標準:
WHERE ((cast (issues.fixed_version_id as text) IN ('current_version','2')));
Postgresql 擴展:
WHERE ((issues.fixed_version_id::text IN ('current_version','2')));
uj5u.com熱心網友回復:
在您的腳本中,我們看到您需要將 varchar 型別的值放在 WHERE 子句中 - ('1', '2', ...) 而不是 (1, 2, ...)
如果是這樣,那么@Belayer 的答案將對您有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/531587.html
標籤:PostgreSQL
