公式からは見つけられず。別サイトからかき集めた。
成果物
対象環境
情報源
演算子 ¶
コード例の動作環境
$ sqlite3 ... sqlite>
算術演算子 ¶
演算子 | 説明 | コード例 | 結果 |
---|---|---|---|
+ |
加算 | select 1 + 2; |
3 |
- |
減算 | select 5 - 1; |
4 |
* |
乗算 | select 2 * 3; |
6 |
/ |
除算 | select 7 / 2; |
3 |
% |
剰余 | select 7 % 2; |
1 |
比較演算子 ¶
演算子 | 説明 | コード例 | 結果 |
---|---|---|---|
= == |
等しい | select 1 = 1; select 1 = 0; select 'A' = 'A'; select 'A' = 'B'; |
1 0 1 0 |
!= <> |
等しくない | select 5 != 5; select 5 != 6; |
0 1 |
< |
小なり (左は右 未満) |
select 5 < 5; select 5 < 6; |
0 1 |
> |
大なり (左は右 超過) |
select 5 > 4; select 5 > 5; |
0 1 |
<= |
小なりイコール (左は右 以上) |
select 5 <= 4; select 5 <= 5; select 5 <= 6; |
0 1 1 |
>= |
大なりイコール (左は右 以下) |
select 5 <= 4; select 5 <= 5; select 5 <= 6; |
0 1 1 |
!< |
不小なり | select 5 !< 5; |
Error: unrecognized token: "!" |
!> |
不大なり | select 5 !> 5; |
Error: unrecognized token: "!" |
論理演算子 ¶
演算子 | 説明 | コード例 | 結果 |
---|---|---|---|
NOT |
否定 | select 5=5; select not 5=5; |
1 0 |
AND |
論理積 | select 1=1 and 1=1; select 1=1 and 1=0; |
1 0 |
OR |
論理和 | select 1=1 or 1=1; select 1=1 or 1=0; select 1=0 or 1=2; |
1 1 0 |
NOT
NOT
は以下のBETWEEN
,IN
,EXISTS
,LIKE
,GLOB
,UNIQUE
にも付与できる。
演算子 | 説明 | コード例 | 結果 |
---|---|---|---|
IS NULL |
NULL用等号 | select 5 is NULL; |
0 |
IS NOT NULL |
NULL用不等号 | select 5 is not NULL; |
1 |
|| |
文字列結合 | select 'A' || 'B'; select 1 || 2; |
AB 12 |
BETWEEN |
範囲 | select 5 between 0 and 10; select 5 between 0 and 4; |
1 0 |
IN |
候補 | select 5 in (5,6); select 5 in (4,6); |
1 0 |
EXISTS |
存在確認 | select exists(select 5); |
1 |
LIKE |
パターンマッチ | select '123' like '%1%'; select '123' like '%4%'; select '123' like '___'; select '123' like '__'; select 'a10%a' like '%10$%%' escape '$'; select 'a10#a' like '%10$%%' escape '$'; |
1 0 1 0 1 0 |
GLOB |
パターンマッチ | select '123' glob '*1*'; select '123' glob '*4*'; select '123' glob '???'; select '123' glob '??'; select '123' glob '[1-9]*'; select '123' glob '[1-9]'; select '123' glob '[^a-zA-Z]*'; select '123' glob '[a-zA-Z]*'; select '2*3=6' glob '*2[*]3*'; select '2+3=5' glob '*2[*]3*'; |
1 0 1 0 1 0 1 0 1 0 |
DISTINCT |
重複せぬよう列挙 | select distinct 列名 from テーブル名; |
|
UNION |
和集合 | select 5 union select 6; |
5 6 |
EXCEPT |
差集合 | select 5 except select 5; |
(取得レコードなし) |
INTERSECT |
積集合 | select 5 intersect select 5; |
5 |
CASE |
条件分岐 | select case when 1=1 then 'A' else 'Z' end; select case when 0=1 then 'A' when 1=1 then 'B' else 'Z' end; |
A B |
COLLATE |
比較方法の指定 | SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE |
SOmeoNE |
LIMIT |
取得上限数 | select 5 union select 6 limit 1; |
5 |
IS
NULL
のためだけにIS
句を使わねばならない。NULLには=
が使えない。クソすぎ。NOT NULL
制約を使おう。
select r.name from repos r where exists( select * from users where id = r.user_id )
select * from TBL where (',' || name || ',') like '%,AAA,%';
GLOB
LIKE
よりGLOB
のほうが速いらしい。
select * from TBL where (',' || name || ',') glob '*,AAA,*';
ビット演算子 ¶
演算子 | 説明 | コード例 | 結果 |
---|---|---|---|
& |
積 | select 1 & 1; select 1 & 0; |
1 0 |
| |
和 | select 1 | 1; select 1 | 0; select 0 | 0; |
1 1 0 |
~ |
反転 | select ~0; select ~-1; |
-1 0 |
<< |
左シフト | select 1<<2; |
4 |
>> |
右シフト | select 4>>2; |
1 |
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux