2

括弧で囲まれた負の数を持つ MYSQL データベースがあります
。(14,500) これは -14500 であるはずです。

数値を varchar として保存しています。すべての数値を double または float 形式に変換し、負の数値をマイナス記号で書式設定しようとしています。
私のコード:

select case 
   when substr(gross_d,1,1) = '(' then
       ltrim('(') and rtrim(')') *-1
   else 
      (gross_d)
   end gross_d_num
from buy;
convert(gross_d_num,Double);

私の現在の方法の問題は、括弧付きのすべての負の数がゼロに変換されることです。私の結果を得る別の方法はありますか?

編集:

また、*-1 を削除して、括弧が削除され、値がゼロになるかどうかを確認しました。

4

3 に答える 3

3

何かのようなもの

convert (
    case 
       when gross_d LIKE '(%)' THEN CONCAT('-', REPLACE(REPLACE(gross_d, ')', ''), '(', ''))
       else gross_d
    end, decimal(19,6))

ここでは、括弧のみをトリミングしています。-1を掛けるとゼロになる

ltrim('(') and rtrim(')') *-1
于 2011-08-01T16:21:23.930 に答える
0
CONVERT( 
    IF( gross_d LIKE '(%)' 
        ,CONCAT( '-', SUBSTR( gross_d, 1, LENGTH( gross_d ) - 2 ) )
        ,gross_d )
,DECIMAL );
于 2011-08-01T16:41:16.380 に答える