=
とほぼ同じだが左右にNULL
があるときでもNULL
でなく真偽値を返す。
成果物
構文
``sql x is y
# 例
select NULL=1; select 1=NULL; select NULL=NULL;
上記はすべて`NULL`が返されてしまう。以下は真偽値が返る。
select NULL is 1; select 1 is NULL; select NULL is NULL;
0 0 1
`not`で反転できる。`!=`とは否定句の位置が違うのがウザい。
select NULL is not 1; select 1 is not NULL; select NULL is not NULL;
1 1 0
# 所感 やはり`NULL`は複雑化するだけでデメリットのほうが大きい。`NULL`のためだけに`=`から`is`に切り替えなければならないとか……ないわ。100億ドルの損失だわ。って言いたかっただけ。 # 対象環境 * <time datetime="2019-09-05T12:38:39+0900" title="実施日">2019-09-05</time> * [Raspbierry pi](https://ja.wikipedia.org/wiki/Raspberry_Pi) 3 Model B+ * [Raspbian stretch](https://ja.wikipedia.org/wiki/Raspbian) 9.0 2018-11-13 * [bash](https://ja.wikipedia.org/wiki/Bash) 4.4.12(1)-release * [SQLite 3.29.0](http://ytyaru.hatenablog.com/entry/2021/06/28/000000) * [MeCab](http://ytyaru.hatenablog.com/entry/2021/02/21/000000) 0.996[ユーザ辞書](http://ytyaru.hatenablog.com/entry/2021/03/19/000000)
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux
# 前回まで * [SQLite3学習 俯瞰まとめ](http://ytyaru.hatenablog.com/entry/2021/05/26/000000) * [SQLite3学習 環境構築まとめ](http://ytyaru.hatenablog.com/entry/2021/05/25/000000) * [SQLite3学習 インタフェースまとめ(C言語、CLI、対話モード、Tcl...)](http://ytyaru.hatenablog.com/entry/2021/05/24/000000) * [SQLite3学習 ドットコマンドまとめ](http://ytyaru.hatenablog.com/entry/2021/05/21/000000) * [SQLite3学習 JSON拡張まとめ](http://ytyaru.hatenablog.com/entry/2021/05/22/000000) * [SQLite3学習 FTSまとめ(ICU, MeCab)](http://ytyaru.hatenablog.com/entry/2021/05/23/000000) * [SQLite3学習 再帰クエリ(WITH RECURSIVE)](http://ytyaru.hatenablog.com/entry/2021/02/27/000000) * [SQLite3学習 R-Treeモジュール](http://ytyaru.hatenablog.com/entry/2021/02/28/000000) * [SQLite3学習 Geopoly(2次元ベクタ画像の生成)](http://ytyaru.hatenablog.com/entry/2021/05/28/000000) * [SQLite3学習 拡張関数(generate_series)](http://ytyaru.hatenablog.com/entry/2021/03/02/000000) * [SQLite3学習 拡張ライブラリ数学関数(extension-functions.c)](http://ytyaru.hatenablog.com/entry/2021/05/27/000000) * [SQLite3学習 謎と名前](http://ytyaru.hatenablog.com/entry/2021/05/29/000000) * [SQL文の分類(DDL,DML,TCL,DCL)](http://ytyaru.hatenablog.com/entry/2021/06/11/000000) * [SQL構文 alter(rename)](http://ytyaru.hatenablog.com/entry/2021/05/31/000000) * [SQL構文 alter(add column)概要](http://ytyaru.hatenablog.com/entry/2021/06/01/000000) * [SQL構文 alter(add column)制約](http://ytyaru.hatenablog.com/entry/2021/06/02/000000) * [SQL構文 alter(add column)sqlite_master変更しても反映されない](http://ytyaru.hatenablog.com/entry/2021/06/03/000000) * [SQL構文 alter(add column)スキーマ再定義(テーブル再作成による定義変更)](http://ytyaru.hatenablog.com/entry/2021/06/04/000000) * [SQL構文 analyze](http://ytyaru.hatenablog.com/entry/2021/06/07/000000) * [SQL構文 attach/detach](http://ytyaru.hatenablog.com/entry/2021/06/08/000000) * [SQLite3構文 begin,end,commit,rollback,savepoint(deferred,immediate,exclusive)](http://ytyaru.hatenablog.com/entry/2021/06/09/000000) * [SQLite3構文 コメント](http://ytyaru.hatenablog.com/entry/2021/06/10/000000) * [SQLite3構文 create/drop](http://ytyaru.hatenablog.com/entry/2021/06/12/000000) * [SQLite3構文 index(create/drop)](http://ytyaru.hatenablog.com/entry/2021/06/13/000000) * [SQLite3構文 table(create/drop)](http://ytyaru.hatenablog.com/entry/2021/06/14/000000) * [SQLite3構文 列制約(default)](http://ytyaru.hatenablog.com/entry/2021/06/15/000000) * [SQLite3構文 列制約(collate)](http://ytyaru.hatenablog.com/entry/2021/06/16/000000) * [SQLite3構文 列制約(primary key)](http://ytyaru.hatenablog.com/entry/2021/06/17/000000) * [SQLite3構文 列制約(primary key)ベストプラクティス](http://ytyaru.hatenablog.com/entry/2021/06/18/000000) * [SQLite3構文 列制約(unique)](http://ytyaru.hatenablog.com/entry/2021/06/19/000000) * [SQLite3構文 列制約(not null)](http://ytyaru.hatenablog.com/entry/2021/06/20/000000) * [SQLite3構文 列制約(check)](http://ytyaru.hatenablog.com/entry/2021/06/21/000000) * [SQLite3構文 列制約(foreign key references)](http://ytyaru.hatenablog.com/entry/2021/06/22/000000) * [SQLite3構文 表制約(primary key, unique, check, foreign key)](http://ytyaru.hatenablog.com/entry/2021/06/23/000000) * [SQLite3でメタデータを取得する方法(DB名(スキーマ名)、テーブル名、列名、制約)](http://ytyaru.hatenablog.com/entry/2021/06/24/000000) * [SQLite3でTEMPの保存先を指定する](http://ytyaru.hatenablog.com/entry/2021/06/25/000000) * [SQLite3構文 delete](http://ytyaru.hatenablog.com/entry/2021/06/26/000000) * [SQLite3ビルド失敗(SQLITE_ENABLE_UPDATE_DELETE_LIMIT)](http://ytyaru.hatenablog.com/entry/2021/06/27/000000) * [SQLite3をソースからビルドする(SQLITE_ENABLE_UPDATE_DELETE_LIMIT)](http://ytyaru.hatenablog.com/entry/2021/06/28/000000) * [SQLite3構文 delete(limit offset, order by)](http://ytyaru.hatenablog.com/entry/2021/06/29/000000) * [SQLite3クエリプランニング(インデックスの働き)](http://ytyaru.hatenablog.com/entry/2021/06/30/000000) * [SQLite3構文 explain](http://ytyaru.hatenablog.com/entry/2021/07/01/000000) * [SQLite構文 expression](http://ytyaru.hatenablog.com/entry/2021/07/02/000000) * [SQLite構文 expression(リテラル)](http://ytyaru.hatenablog.com/entry/2021/07/03/000000) * [SQLite構文 expression(パラメータ)](http://ytyaru.hatenablog.com/entry/2021/07/06/000000) * [SQLite構文 expression(演算子)](http://ytyaru.hatenablog.com/entry/2021/07/04/000000) * [SQLite構文 expression(in 句)](http://ytyaru.hatenablog.com/entry/2021/07/05/000000) * [SQLite構文 expression(like 句)](http://ytyaru.hatenablog.com/entry/2021/07/07/000000) * [SQLite構文 expression(glob 句)](http://ytyaru.hatenablog.com/entry/2021/07/08/000000) * [SQLite構文 expression(regexp 句)](http://ytyaru.hatenablog.com/entry/2021/07/10/000000) * [SQLite構文 expression(match 句)](http://ytyaru.hatenablog.com/entry/2021/07/11/000000)