SQLite数据库,在第二个数字后插入punct

时间:2013-01-02 08:09:48

标签: java sql

我有一个sqlite数据库,有很多表。每个表都有很多行。在一栏中我有这样的事情:

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

我在创建数据库时犯了一个错误(我不再访问初始数据),我需要的是在第二个数字之后用一个punct制作这些数字,并且有类似的东西:

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

我有什么方法可以做到这一点?我更喜欢Java。或者它已经有任何工具可以做到这一点吗?

3 个答案:

答案 0 :(得分: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;
}

该函数将参数作为参数[58458,65856,75658,98456,98578],您可以从中获取 SQL表,返回值为[58.458,65.856,75.658,98.456,98.578],这是用列更新列所需的值。

对于SQL,基本思想是:

UPDATE table 
SET column = convertColumn(column);

答案 1 :(得分:1)

如果它是NUMERIC列,这应该有效:

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

如果它不是NUMERIC或REAL列,那么这应该有效:

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

(感谢Goibniu的指针)

答案 2 :(得分:1)

您可以在列上使用CAST作为REAL,然后按照另一个答案中的建议进行更新。

select CAST(YOUR_COL AS REAL) from YOUR_TABLE

在此文档中搜索CAST以获取更多信息:SQLite language guide