0

私はたくさんのテーブルを持つsqliteデータベースを持っています。各テーブルには多くの行があります。あるコラムには、次のようなものがあります。

[58458, 65856, 75658, 98456, 98578, ... N]

データベースを作成したときに間違いを犯しました(最初のデータにはもうアクセスできません)。必要なのは、これらの数字を2桁目の後にパンクトで作成し、次のようなものにすることです:

[58.458, 65.856, 75.658, 98.456, 98.578, ... N]

これを行う方法はありますか?私はJavaの方が好きです。それとも、これを行うことができるツールはすでにありますか?

4

3 に答える 3

2

この関数を使用して、各列からの情報を解析します。

public static String convertColumn(String textF)
{


    String textAux = "";
    String newText = "[";

    int i = 0;

    textF = textF.substring(1, textF.length() - 1);

    while(i < textF.length())
    {
        textAux = textF.substring(i, i + 5);
        int nrAux = Integer.parseInt(textAux);

        i+=7;
        int a;
        int b;

        a = nrAux / 1000;
        b = nrAux - a * 1000;

        double newNr;
        newNr = a + b * 0.001;
        newText = newText + newNr + ", ";

    }
    newText = newText.substring(0, newText.length() - 2);
    newText += "]";
    return newText;
}

この関数は、SQL テーブルから取得する [58458, 65856, 75658, 98456, 98578] のような文字列をパラメータとして持ち、戻り値は [58.458, 65.856, 75.658, 98.456, 98.578] になります。列を更新する必要がある値。

SQL の場合、基本的な考え方は次のとおりです。

UPDATE table 
SET column = convertColumn(column);
于 2013-01-02T12:26:13.873 に答える
1

列で CAST を REAL として使用し、他の回答でアドバイスされているように更新できます。

select CAST(YOUR_COL AS REAL) from YOUR_TABLE

詳細については、このドキュメントで CAST を検索してください: SQLite 言語ガイド

于 2013-01-02T11:06:15.757 に答える
1

NUMERIC 列の場合、これは機能するはずです。

UPDATE <TABLE NAME> SET <COLUMN> = <COLUMN>/1000;

NUMERIC または REAL 列でない場合、これは機能するはずです。

UPDATE <TABLE NAME> SET <COLUMN> = CAST(<COLUMN> AS REAL)/1000;

(ポインターを提供してくれたGoibniuに感謝します)

于 2013-01-02T08:15:59.873 に答える