我需要为列中的所有行否定列的值。我试图使用以下查询,但它没有更新任何行:
sqliteDatabase.rawQuery("UPDATE "+ SQL_TABLE_NAME + " SET "+ COL_1 +" = " + "-"+COL_1 , null);
其中COL-1 = col_1,表格中为整数类型。
- 猎者
答案 0 :(得分:4)
您可以将列乘以-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
(但这会复制你的表,你可能想把数据推到临时表中) - 不过我认为这是一个可怕的解决方案。我试着找到一种方法来重构你的表模式,因此它不是主键。
答案 1 :(得分: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);