我試圖執行以下查詢:PostgreSQL - 將varchar轉換爲int?
DELETE FROM table_name WHERE ID>9;
,但我不能,因爲「ID」字段類型爲「VARCHAR」的。 我如何將它轉換爲'int'並使它正常工作? (刪除ID
大於9的所有行,而不是將其轉換爲數值varchar
值)
我試圖執行以下查詢:PostgreSQL - 將varchar轉換爲int?
DELETE FROM table_name WHERE ID>9;
,但我不能,因爲「ID」字段類型爲「VARCHAR」的。 我如何將它轉換爲'int'並使它正常工作? (刪除ID
大於9的所有行,而不是將其轉換爲數值varchar
值)
我不知道爲什麼要將數字值存儲爲字符串。您可能需要更多的東西一樣:
DELETE FROM table_name
WHERE regexp_matches(ID, '^[1-9][0-9]');
這從兩個數字,第一個是不0
啓動表的任何id
刪除。如果您嘗試進行轉換,那麼如果不是所有ID均爲數字,則可能會出現轉換錯誤。這也適用於可能溢出int的長數字(儘管numeric
可以解決該問題)。
編輯:
對於一個通用的解決方案,我想我會寫爲:
where (case when regexp_matches(id, '^[0-9]+$')
then id::numeric
end) > 70000
的case
應防止對非數字id
小號任何錯誤。
我正在處理別人的項目,而不是我的項目。我真的不明白你的解決方案,我怎麼能概括它呢?像'WHERE ID> 70000' – Gambit2007
'DELETE FROM table_name WHERE ID :: int> 9;' –
如果您預見需要將ID作爲數字處理,請考慮將其存儲在數字列中,而不是文本。 –
嘗試你的第一個解決方案,我得到了整數的無效輸入語法:「」 – Gambit2007