2011-05-10 348 views

回答

6

似乎在PG 9.0做工精細,但如果不是在你的版本,你可以隨時轉換第一個文本:

select 1::bigint::text::varchar; 
4
alter table abc alter column def type varchar using def::varchar; 
+0

他在談論鑄造,而不是改變列。 – 2012-10-26 11:16:02

0

首先,謝謝你「丹尼斯日Bernardy」 (以上評論)

我試圖更新一個字段,這是非常有幫助的。

最近,我一直在學習的PostgreSQL VS紅移SQL和查詢的不同之處......

所以試圖做的紅移更新它的工作就像這樣:

UPDATE table_name SET fieldname = fieldname + 100 
FROM table_name WHERE substring(fieldname from 4 for 2) 
IN ('01','02','03','04','05','06','07','08','09','10','11','12'); 

但Postgres的9.3我的查詢失敗。

這麼多的研究,並試圖找到任何東西,使其工作後...

在結束時,所有我新增加是::varchar到字段名的,像這樣的結尾:

fieldname::varchar 

原因是postgresql substring()期望文本和我的fieldname是一個BIGINT,它阻止了我無法使用子函數。

所以比較查詢:

舊的查詢

UPDATE table_name SET fieldname = fieldname + 100 
FROM table_name WHERE substring(fieldname from 4 for 2) 
IN ('01','02','03','04','05','06','07','08','09','10','11','12'); 

新建查詢Postgres的9.3

UPDATE table_name SET fieldname = fieldname + 100 
FROM table_name WHERE substring(fieldname::varchar from 4 for 2) 
IN ('01','02','03','04','05','06','07','08','09','10','11','12'); 

請注意:同樣我所要做的就是轉換字段用於子字符串查詢中以包含:: varchar

再次,

謝謝。

相關問題