2011-03-24 73 views
3

我需要否定列中所有行的列值。我想這樣做,使用下面的查詢,但沒有更新任何行:需要更新SQLite中列的值

sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "-"+COL_1 , null); 

凡COL-1 = COL_1,這是在表整數類型。

--Twinks

回答

3

您可以通過-1

乘以列
Update SQL_TABLE_NAME Set COL_1 = COL_1 * -1 

請注意,您的查詢格式適用於我;

Update tPerson Set Age = -Age 

如果我是你,我會創建一個字符串和您的查詢設置爲,所以你可以檢查它被設置爲你希望:

String sql = "UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "-" + COL_1; 
sqliteDatabase.rawQuery(sql, null); //breakpoint here, and check sql var 

貴SQL_TABLE_NAME有它的空間?嘗試將其包裝在方括號中,也許與列名稱相同。

編輯:

我會建議更新主鍵是負面的,但要做到這一點,你可以做這樣的事情:

SET IDENTITY_INSERT Person ON 

Insert Into Person ([Id], [Name], [Age]) 
Select -[Id], [Name], [Age] From Person 

SET IDENTITY_INSERT Person OFF 

(但是這會複製你的表,你可能想將數據推入臨時表) - 但我認爲這是一個可怕的解決方案。我試着找到一種方法來重構你的表模式,所以它不是主鍵。

+0

mCount在我執行查詢後出來-1,表和列名沒有空格,他們有_使其有意義 – help 2011-03-24 09:31:07

+0

有一件事我忘了提及的是,COL_1是一個主鍵..如果影響 – help 2011-03-24 09:39:10

+0

@help我會看看這個:[link](http://stackoverflow.com/questions/2473215/negative-primary-keys) – firefox1986 2011-03-24 09:42:51

2
sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "-1*"+COL_1 , null); 

OR

sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "0-"+COL_1 , null); 

---- ----- EDIT1

sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET `"+ COL_1 +"` = " + "(`"+COL_1 +"` * -1)", null); 
+1

嗨Sarwar,它不工作 – help 2011-03-24 09:20:16

+0

我不知道我使用的語法。但是,我認爲你知道這個語法,並且有了這個想法。出於好奇, – 2011-03-24 09:23:14

+0

什麼是你的表名和特定的列名? – 2011-03-24 09:24:17