私は SQLite の世界に足を踏み入れたばかりで、フィールド定義を見ています。SQLite のフィールドとVarchar
/の間に違いはないように見えると考えてよろしいですか? また、フィールド長の設定は影響しますか?Char
text
CompanyName varchar (40) NOT NULL ,
そして最後に、ブール値フィールドにデフォルト値を与える場合、1
またはTrue
をデフォルトとして使用しますか?
Varchar / Char と sQLite のテキスト フィールドの間に違いはないように思われるという考えで正しいでしょうか?
はい。それで合っています。それらはすべて sqlite と同じです。
また、フィールド長の設定は影響しますか?
また正しい; 上位層が何らかの形で長さのチェック/強制を行うのを止めるものは何もないことに注意してください。
ブール値フィールドにデフォルト値を与える場合、デフォルトとして 1 または True を使用しますか?
以下に示すように、1 (またはゼロ以外の任意の数値):
sqlite> select 1 where True;
Error: no such column: True
sqlite> select 1 where 1;
1
sqlite> select 1 where "True";
sqlite> select 1 where "False";
sqlite> select 1 where 0;
sqlite> select 1 where -1;
1
sqlite での true/false に関する注意事項
SQLite では true を 1、false を 0 で表します。
sqlite> select 3 > 2;
1
sqlite> select 3 < 2;
0
SQLite が true または false と見なすものは、より複雑です。ドキュメントを引用します:
SQL 式の結果をブール値に変換するために、SQLite は最初に CAST 式と同じ方法で結果を NUMERIC 値にキャストします。NULL またはゼロ値 (整数値 0 または実数値 0.0) は false と見なされます。他のすべての値は true と見なされます。
たとえば、値 NULL、0.0、0、'english'、'0' はすべて false と見なされます。値 1、1.0、0.1、-0.1、および '1english' は true と見なされます。