次の値を持つ「説明」列を持つテーブルがあります。
- OPTestMachine
- OP手動テスト
- OP1010
したがって、値を取得する select ステートメントは次のようになります。
SELECT description
FROM operation;
数値「1010」(または substr() 基準に一致する任意の文字列) を抽出し、可能であれば「見つかった文字列」を整数に変換したいと考えています。
だから私はこれを思いついた:
SELECT to_number(substr(description, 3, 4))
FROM operation
WHERE regexp_like(substr(description, 3, 4), '^\d+(\.\d+)?$', '')
結果は単純明快です: "1010"
それは私にとってかなりうまくいきます。
今、私にとって難しい部分: substr()-result を WHERE 句で使用したい
このようなもの:
SELECT to_number(substr(description, 3, 4))
FROM operation
WHERE regexp_like(substr(description, 3, 4), '^\d+(\.\d+)?$', '')
AND substr(description, 3, 4) < 2000;
これを行うと、「無効な番号」というエラーが表示されます。サーバーがselectステートメントを解析する順序が原因だと思います。
あなたが何か助けを提供できれば、それは素晴らしいことです!!