回答編集履歴
3
誤記を訂正、コメントを追加しました。
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
手元に、Fedora 37
|
1
|
+
手元に、Fedora 37/MariaDBしかない(他にMySQLがインストールされたPCがない)ので、試した結果を書きます。
|
2
2
|
|
3
3
|
**値の範囲**
|
4
4
|
- bit(1) 0,1
|
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
**三値論理**
|
36
36
|
|
37
|
-
boolean列がnullableな
|
37
|
+
boolean列がnullableなら三値論理は適用されると思います。独自に判定したければ以下のようにします。
|
38
38
|
|
39
39
|
- false : 0
|
40
40
|
- unknown : 0.5
|
@@ -43,5 +43,10 @@
|
|
43
43
|
```sql
|
44
44
|
a or b = max(a,b)
|
45
45
|
a and b = min(a,b)
|
46
|
-
not a =
|
46
|
+
not a = 1 - a
|
47
47
|
```
|
48
|
+
|
49
|
+
**is null/is true**
|
50
|
+
|
51
|
+
最後に、`is null`の存在理由は明らかですが`is true | false`の存在理由は不明です。
|
52
|
+
|
2
コメントとすべき内容を追記
test
CHANGED
@@ -26,7 +26,22 @@
|
|
26
26
|
- bit(1) は0,1しか格納できないので好ましい
|
27
27
|
ただしbit(1)はSELECTで表示されない。cast(<列> as unsigned)する
|
28
28
|
- boolean/tinyintは、制約を付加して0,1限定で使う
|
29
|
+
booleanの解釈に注意が必要
|
29
30
|
|
30
31
|
**整数型**
|
31
32
|
|
32
33
|
他の整数型でも、`= true | false`、`<> true | false`、`is true | false`、`is not true | false` は使えるようです。
|
34
|
+
|
35
|
+
**三値論理**
|
36
|
+
|
37
|
+
boolean列がnullableなので三値論理は適用されると思います。独自に判定したければ以下のようにします。
|
38
|
+
|
39
|
+
- false : 0
|
40
|
+
- unknown : 0.5
|
41
|
+
- true : 1
|
42
|
+
|
43
|
+
```sql
|
44
|
+
a or b = max(a,b)
|
45
|
+
a and b = min(a,b)
|
46
|
+
not a = abs(1 - a)
|
47
|
+
```
|
1
-128 - 127 に訂正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
**値の範囲**
|
4
4
|
- bit(1) 0,1
|
5
|
-
- boolean / tinyint -12
|
5
|
+
- boolean / tinyint -128 〜 127
|
6
6
|
|
7
7
|
**DML**
|
8
8
|
where の条件次第では、booleanやtinyintは問題が起きます。
|