0

SQL Server Management Studio に、数値の範囲を文字列として含む列を持つテーブルがあります。文字列から数値を抽出して新しいテーブルに挿入する方法を見つけようとしています。

たとえば、テーブルには値12.45% - 42.32%が文字列として含まれています。列と列を持つ新しいテーブルにそれらを取得12.4542.32て挿入できるようにしたいと思います。min_percentmax_percent

SQL を使用して文字列から単一の数値を抽出する方法をいくつか見つけました。また、SQL Server のテキストから数値を抽出する(複数の整数を返しますが、10 進数は返しません) の関数を変更しようとしましたが、これまでのところ行っていません。それを機能させることができます。提案をお寄せいただきありがとうございます

4

3 に答える 3

1

関数は非常に近いです。数値を使用してポイントを追加するだけです:

  with C as
  (
    select cast(substring(S.Value, S1.Pos, S2.L) as decimal(16,2)) as Number,
           stuff(s.Value, 1, S1.Pos + S2.L, '') as Value
    from (select @String+' ') as S(Value)
      cross apply (select patindex('%[0-9,.]%', S.Value)) as S1(Pos)
      cross apply (select patindex('%[^0-9,.]%', stuff(S.Value, 1, S1.Pos, ''))) as S2(L)
    union all
    select cast(substring(S.Value, S1.Pos, S2.L) as decimal(16,2)),
           stuff(S.Value, 1, S1.Pos + S2.L, '')
    from C as S
      cross apply (select patindex('%[0-9,.]%', S.Value)) as S1(Pos)
      cross apply (select patindex('%[^0-9,.]%', stuff(S.Value, 1, S1.Pos, ''))) as S2(L)
    where patindex('%[0-9,.]%', S.Value) > 0
  )
  select Number
  from C
于 2013-06-24T18:44:34.397 に答える