[解決済み] PostgreSQLで文字列を整数にキャストし、キャストにエラーが発生した場合に0を返すにはどうすればよいですか?
2022-05-08 13:11:04
質問
PostgreSQLで、varcharカラムを持つテーブルがあります。データは整数であることが想定されており、クエリで整数型にする必要があります。いくつかの値は空の文字列です。 次のようなものです。
SELECT myfield::integer FROM mytable
イールド
ERROR: invalid input syntax for integer: ""
postgres でキャストのクエリを実行し、キャスト中にエラーが発生した場合に 0 を返すにはどうすればよいですか?
どのように解決するのですか?
私はちょうど同じような問題と格闘していたのですが、関数のオーバーヘッドを必要としませんでした。私は次のようなクエリを思いつきました。
SELECT myfield::integer FROM mytable WHERE myfield ~ E'^\\d+$';
Postgresは条件分岐を短くするので、::integerキャストに非整数がヒットしないはずです。また、NULL値も扱えます(正規表現にマッチしません)。
もし、選択しない代わりにゼロが欲しいのであれば、CASE ステートメントを使用すればよいでしょう。
SELECT CASE WHEN myfield~E'^\\d+$' THEN myfield::integer ELSE 0 END FROM mytable;
関連
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
SQL-初心者のためのベスト入門SQLクエリ I
-
[解決済み] Oracle Trigger ORA-04098: トリガーが無効で、再バリデーションに失敗しました。
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] SQL Serverでストアドプロシージャ内のテキストを検索する
-
[解決済み] 最初の行への結合方法
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] 文字列の一部をUPDATEおよびREPLACEする。
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?
-
[解決済み] varcharフィールドの型をintegerに変更する。"自動的にinteger型にキャストすることはできません"
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ERROR 1136 (21S01) を解決してください。列の数が Mysql の行 1 の値の数と一致しません。
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] SQL Serverにおける関数とストアドプロシージャの比較
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] カラム名の変更 SQL Server 2008
-
[解決済み] SQL Server の CASE ステートメントで OR がサポートされていない。
-
[解決済み] 文字列の一部をUPDATEおよびREPLACEする。
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?