1

「3/4」や「5/9」などの文字列と、「1/2 km」や「3/4 度」などの文字列が mysql 列に格納されています。

それらを数値に変換したいと思います。最初のケースでは、3/4 ==> .75 です。
より複雑な 2 番目のケースでは、"km" や "degree" などの単位を取り除いて "1/2 km" ==> 0.5 にします。

4

3 に答える 3

1

これはクエリで行うべきことではないと思いますが、保存時に計算し、計算された値をテーブルのテキスト値の隣に保存します。

ただし、必要に応じて、いくつかの文字列関数を使用して値をスライスし、自分で計算することができます。

select
  x.Multiplier / x.Divider as Result
from
    (select
      cast( substr( t.String, 
                    1, 
                    locate('/', t.String) - 1) 
            as decimal) 
        as Multiplier,
      cast( substr( t.String, 
                    locate('/', t.String) + 1, 
                    locate( ' ', 
                            concat(t.String, ' '))) 
            as decimal) 
        as Divider
    from
      YourTable t) x

ただし、データが「無効」の場合、これにより問題が発生する可能性があることに注意してください。「0/0 km」と表示されている場合は失敗する可能性があり、「ここにデータがありません」が含まれている場合も失敗する可能性があります。

于 2012-10-23T14:48:37.373 に答える
-1

PHP を使用すると、次のことができます。

// assuming $vals has the values from the database
$converted = array();
foreach ($vals as $key => $val) {
  preg_match("/^(\\d+)\\/(\\d+)/", $val, $matches)
  if (count($matches) > 2) {
    $numerator = (int) $matches[1];
    $denominator = (int) $matches[2];
    $converted[$key] = (float) $numerator / $denominator;
  }
}
于 2012-10-23T14:47:52.103 に答える