[解決済み] varcharフィールドの型をintegerに変更する。"自動的にinteger型にキャストすることはできません"
質問
小さなテーブルがあり、あるフィールドに " という型があります。 文字が変化する となります。これを".に変更しようとしています。 整数 "ですが、キャスティングができないというエラーが出ます。
これを回避する方法はありますか?それとも、別のテーブルを作成して、クエリを使用してレコードをそこに持ってくるべきですか?
このフィールドには整数値しか含まれません。
解決方法は?
からの暗黙の(自動的な)キャストは存在しません。
text
または
varchar
から
integer
(を渡すことはできません(つまり
varchar
を期待する関数に
integer
を割り当てるか
varchar
フィールドを
integer
を使用した明示的なキャストを指定する必要があります。
テーブルを変更 ... 列を変更する ... TYPE ... 使用
:
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (col_name::integer);
テキストフィールドに空白がある場合がありますので、その場合は使用してください。
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (trim(col_name)::integer);
で空白を除去してから変換します。
このことは、もしこのコマンドが
psql
しかし、PgAdmin-III がエラーの全容を表示していない可能性があります。以下は、このテストを
psql
をPostgreSQL 9.2上で実行します。
=> CREATE TABLE test( x varchar );
CREATE TABLE
=> insert into test(x) values ('14'), (' 42 ');
INSERT 0 2
=> ALTER TABLE test ALTER COLUMN x TYPE integer;
ERROR: column "x" cannot be cast automatically to type integer
HINT: Specify a USING expression to perform the conversion.
=> ALTER TABLE test ALTER COLUMN x TYPE integer USING (trim(x)::integer);
ALTER TABLE
を追加してくれた @muistooshort さん、ありがとうございました。
USING
のリンクがあります。
以下もご参照ください。 この関連質問 Railsのマイグレーションに関するものですが、根本的な原因は同じであり、回答も同じです。
それでもエラーが発生する場合は、列の値ではなく、この列に対するインデックスまたは列のデフォルト値がタイプキャストに失敗する可能性があります。ALTER COLUMNの前にインデックスを削除し、ALTER COLUMNの後にインデックスを再作成する必要があります。デフォルト値は適切に変更する必要があります。
関連
-
PostgreSQLのURL解決方法
-
PostgreSQLがバキュームテーブルの情報を収集する必要があることを発見する方法
-
Postgresqlのセルフインクリメントidをキーにした場合の重複問題の解決
-
[解決済み] JavaでDoubleをIntegerにキャストする
-
[解決済み】pandasでカラムの種類を変更する
-
[解決済み】PostgreSQLでタイムスタンプから日付(yyyy/mm/dd)を抽出する。
-
[解決済み] PostgreSQLでトリガーを一時的に無効にするにはどうすればよいですか?
-
[解決済み] Postgres でシーケンスをリセットし、id 列を新しいデータで埋めるにはどうすればよいですか?
-
[解決済み] PostgreSQLにデータベースが存在するかどうかをシェルで確認する
-
[解決済み] PostgreSQLで文字列を整数にキャストし、キャストにエラーが発生した場合に0を返すにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
postgresqlにおける時間処理のコツ(推奨)
-
PostgreSQLでデータの一括インポートのパフォーマンスを向上させるn個の方法を説明します。
-
Postgresqlのデータは、2つのフィールドを追加し、一意の操作を統合する
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] psqlでデータベースを切り替えるには?
-
[解決済み] 'ユーザー "postgres" のパスワード認証に失敗しました'
-
[解決済み] Postgresqlの場合。パスワード付きで psql を実行するスクリプト
-
[解決済み] Postgres / PostgreSQLのテーブルとインデックスのディスクサイズはどのように見つけるのですか?
-
[解決済み] PostgreSQL用GUIツール【終了】のお知らせ
-
[解決済み] PostgreSQLでカラムのデフォルト値を変更するにはどうすればよいですか?