一般に、リレーショナルデータベースでは、評価の順序が定義されていないため、select
関数はwhere
の前に呼び出されます 句はデータをフィルタリングします。私はこれがSQLServerの場合であることを知っています。 こちら Oracleでも同じことが起こり得ることを示唆する投稿です。
case
ただし、ステートメントはカスケードするため、順番に評価されます。そのため、私は次のことを好みます:
select (case when NOT regexp_like(xy,'[^[:digit:]]') then to_number(xy)
end)
from ABC;
これはNULL
を返します 数値ではない値の場合。