sql >> データベース >  >> RDS >> PostgreSQL

文字列を整数にキャストし、PostgreSQLでのキャストでエラーが発生した場合に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;
    


    1. JDBCアプリケーションでPreparedStatement.cancel()を呼び出すと、Oracleデータベースで実際にそれを強制終了しますか?

    2. 開発プロジェクト中のミッションクリティカルなアクセスアプリケーションの特定と管理

    3. SQLServerのすべてのテーブルを検索して文字列を検索します

    4. SQLServerトランザクションログの基本