SQlite按位运算和更新

时间:2018-06-04 08:35:34

标签: sql database sqlite

我有一个sqlite3 db文件,其中的表格如下

sqlite> .table
main_db  test
sqlite> .schema test
CREATE TABLE test (ID INTEGER PRIMARY KEY AUTOINCREMENT, NUM INTEGER);
sqlite> .headers on
sqlite> .mode column
sqlite> select * from test;
ID          NUM       
----------  ----------
1           15        

我想对NUM列的所有值执行按位运算符,并在同一位置更新。 这就是我尝试在该字段上执行按位操作。

sqlite> select NUM from test | 20;
  

错误:靠近“|”:语法错误

如何执行此操作以及如何将结果保存在同一位置? 如果在同一命令中完成此操作将非常有用。 :)

1 个答案:

答案 0 :(得分:0)

怎么样:

UPDATE test
SET NUM = NUM | 20
WHERE ...  ;

输出:

Before
1 - 15
After
1 - 31

<强> DBFiddle Demo

编辑:

  

只是为了显示结果而不更新,我已经使用了这个命令。选择NUM = NUM​​ | 20来自测试;但它提供了一些其他结果:https://dbfiddle.uk/?rdbms=sqlite_3.8&fiddle=04a9fe5251b377f96551e65ecded053e

select NUM = NUM | 20 from test;
-- is the same as:
SELECT NUM = (NUM | 20) FROM test;

你真正想要的是:

select NUM | 20 AS NUM from test;