2017-09-02 21 views
0

にテキスト文字列を置換することができません、私はテーブルが3つの列idcharacter varying (254)val_1 numericval_2 numericを含むmy_tableと呼ばれる持っています。次のクエリ:エラー:私のPostgreSQL 9.5データベースにPostgreSQLの

Select id, val_1, val_2 from my_table limit 4; 

リターン4つのサンプル行:

Alter table my_table alter column id type integer using id::integer; 

しかし、私はこのエラーを取得する:

id   val_1 val_2 
1147_1  72  61 
1228_1  73  67 
1255_1  74  68 
1337_1  79  66 

は、私はこのように私が試したid列のデータ型を変更したいです:

ERROR: invalid input syntax for integer: "1147_1" 

これら""を取り除くために、私が試した:

Update my_table set id = replace(id, '"',''); 

をクエリが正常に戻りました。しかし、私は再びデータ型を変更しようとしたときに同じエラーが発生しますERROR: invalid input syntax for integer: "1147_1"。誰かが私にこの問題を解決するのを助けることができますか?私はreplace()コマンドを正常に実行しても同じエラーが発生し続ける理由を理解できません。

+0

'1147_1' **は有効な整数ではありません。どのように変換したいですか? '1147'か' 11471'か? – klin

+0

その場合、substring()コマンドを使って番号を抽出できると思います。ソートの目的でデータ型を変更したかったのです。 –

答えて

2

あなたは、例えば、有効な整数であるid値を変更する必要がありますアンダースコアを削除:

alter table my_table alter column id type integer using replace(id, '_', '')::integer; 
関連する問題