我需要否定列中所有行的列值。我想這樣做,使用下面的查詢,但沒有更新任何行:需要更新SQLite中列的值
sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "-"+COL_1 , null);
凡COL-1 = COL_1,這是在表整數類型。
--Twinks
我需要否定列中所有行的列值。我想這樣做,使用下面的查詢,但沒有更新任何行:需要更新SQLite中列的值
sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "-"+COL_1 , null);
凡COL-1 = COL_1,這是在表整數類型。
--Twinks
您可以通過-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
(但是這會複製你的表,你可能想將數據推入臨時表) - 但我認爲這是一個可怕的解決方案。我試着找到一種方法來重構你的表模式,所以它不是主鍵。
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);
嗨Sarwar,它不工作 – help 2011-03-24 09:20:16
我不知道我使用的語法。但是,我認爲你知道這個語法,並且有了這個想法。出於好奇, – 2011-03-24 09:23:14
什麼是你的表名和特定的列名? – 2011-03-24 09:24:17
mCount在我執行查詢後出來-1,表和列名沒有空格,他們有_使其有意義 – help 2011-03-24 09:31:07
有一件事我忘了提及的是,COL_1是一個主鍵..如果影響 – help 2011-03-24 09:39:10
@help我會看看這個:[link](http://stackoverflow.com/questions/2473215/negative-primary-keys) – firefox1986 2011-03-24 09:42:51