2013-01-02 79 views
0

我有一個sqlite數據庫,有很多表。每個表都有很多行。在一個專欄中,我有這樣的事情:SQLlite數據庫,在第二個數字後插入點號

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

我犯了一個錯誤創建DATABSE(我沒有存取權限的初始數據了),我需要的是一個後PUNCT使這些數字時第二個數字,有這樣的事情:

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

有沒有什麼辦法可以做到這一點?我更喜歡Java。或者它是否已經有能夠做到這一點的工具?

+0

是他們所有5位數字? –

+0

是的,但問題在於,它不是NUMERCI列,它只是一個簡單的文本字段,其中有很多數字,用逗號分隔。 – artouiros

+0

好吧,所以你需要解析看起來像[58458,65856,75658,98456,98578,... N]的每一列並編輯裏面的數字,然後更新列,最終結果是一個簡單的文本字段也? –

回答

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

如果它是一個NUMERIC列這應該工作:

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

如果它是不是數字或REAL列那麼這應該工作:

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

(感謝Goibniu爲指針)

+0

謝謝,但是問題在於它不是NUMERIC柱,它只是一個簡單的文本字段,其中有很多數字,用逗號分隔。 – artouiros

+0

更新CAST信息。 – Ilion

+0

啊我現在明白你的問題了。是的,這是更困難的。 – Ilion

1

您可以在列上使用CAST作爲REAL,然後按照其他答案中的建議進行更新。

select CAST(YOUR_COL AS REAL) from YOUR_TABLE 

搜索對該文檔CAST更多的信息就可以了:SQLite language guide

相關問題