0

この質問は、カスタムMySQL列形式を定義したかった別の質問に関連しています。質問はここにあります:カスタムMySQL列フォーマットを適用する方法

私が必要とするカスタム形式は、常に2桁の整数、#記号、スペース、小数点以下2桁の10進数です。許可される値の例は次のとおりです。

30# 11.00
27# 17.25
40# 17.25

許可されていない値は次のとおりです。

30# 11
40# 20.5
27# 13

ご覧のとおり、許可されていない値の問題は、基本的に最後の10進数に「。」がないことです。末尾のゼロ。これらの誤った列値をすべて修正するために使用できる更新構文はありますか?基本的に、「#」の後の最後の10進数に2つの末尾の10進数があるかどうかを確認する必要があります。そうでない場合は、「。」を追加します。末尾のゼロ。誰かがUPDATEこれを行うことができるコマンドを知っていますか?

ありがとう!

編集

いくつかのコメントへの回答:はい、それはVARCHARタイプ列です。値が必要な値と完全に異なる場合は、そのままにしておきます。ほとんどの問題は私が説明したものであり、1つのクエリですべての問題を修正できれば、それは良いスタートです。

4

1 に答える 1

2
update your_table
set some_column = case when len(some_column) = 6
                       then some_column + '.00'
                       when len(some_column) = 8
                       then some_column + '0'
                  end
where len(some_column) < 9;

この例を参照してください

これは非常にうまく機能したいくつかのより正確な構文です:

update your_table 
set some_column =
case 
    when length(some_column) = 6 
    then concat(some_column,".00") 
    when length(some_column) = 7
    then concat(some_column,"00") 
    when length(some_column) = 8
    then concat(some_column,"0") 
    else some_column 
end 
where some_column REGEXP '^[0-9][0-9]# [0-9][0-9]';
于 2012-06-19T14:59:27.460 に答える