3

Wordpress MySQLデータベースではwp_postmeta table、にほとんどの行がmeta_key='price'ありmeta_value='XXX'、XXXは数字です。meta_valueは長いテキストフィールドです。格納されている数値の形は異なります。ドットで格納されているものもあれば、1000を意味します(10.000は10,000を意味します)。その他の数値は、コンマで格納されており、100分の1を意味します(10,00は10を意味します)。ドットとコンマを削除して、100分の1のない純粋な数値にする方法は?つまり、100.000は100000、10,00は10になります。よろしくお願いします。

4

4 に答える 4

6

グローバルREPLACE関数を試してください

UPDATE wp_postmeta
SET meta_value = REPLACE(REPLACE(meta_value,',00',''),'.','')
WHERE meta_key='price';
于 2012-06-26T15:37:56.647 に答える
1

これを行う方法に注意する必要があります。'。'を確認することをお勧めします。または、文字列の最後に「、」があります。これには、最後から3番目の文字を確認する必要があります。

update wp_postmeta
    set meta_value = (case when left(right(meta_value, 3), 1) = '.'
                           then replace(meta_value, ',', '')
                           when left(right(meta_value, 3), 1) = ','
                           then replace(meta_value, '.', '')
                           else replace(replace(meta_value, ',', ''), '.', '')
                      end)
    where meta_key = 'price'
于 2012-06-26T16:37:54.857 に答える
0

データベース内の行をループして、。を削除し、、、およびそれらの後ろの次の2文字を削除する必要があります。

ただし、なぜ記号を逆方向に使用しているのかわかりません。

また、データベースを変更すると、WordPressがデータを解釈する方法が変わる可能性があるので注意してください。

于 2012-06-26T15:33:56.917 に答える
0

交換してみてください:

UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, '.', '') WHERE meta_key='price';
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, ',', '') WHERE meta_key='price'

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

自己責任。

于 2012-06-26T15:37:52.090 に答える