我需要否定列中所有行的列值。我想这样做,使用下面的查询,但没有更新任何行:需要更新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