2017-05-17 6 views
-1

私はこのようなものかもしれない文字列(Oracle 11gの)持っている:複数の数字を含む文字列の最初の数字を取得しますか?

WORD1:10.20 WORD2:1112.30

どちらの数字は(数十、数百または数千もできる)そのサイズを変えることができる - がします単語は固定されています - そして、私が必要とするのは最初の数字(小数部分を含む)を抽出することです。上記の例では、 "10.20"になります。

どうすれば実現できますか?基本的に私が必要とするのは、 "WORD1"と "WORD2"の間の整数を取得することです。

+0

これは悪いデータベース設計のためのサインです。文字列に数値が必要な場合は、数値として格納する必要があります。おそらくあなたはこれのためにいくつかのテーブルを追加/変更する必要があります。 – Aloso

+0

入力文字列に1つのWORDしかないことはありますか?それは特別な取り扱いを必要とするでしょう。 – mathguy

答えて

2

言葉が変化していない場合は、まず'WORD2'の発生まで、8文字から部分文字列を取得する必要があります:

select substr(str, 8, instr(str, 'WORD2') -9) 
from (
     select 'WORD1: 10.20 WORD2: 1112.30' str 
     from dual 
    ) 
+0

...標準の文字列関数(正規表現なし)のみを使用するという明確な利点があります。少なくともOracleでは、これが大幅にパフォーマンスを向上させます。 – mathguy

関連する問題