boolにはbit型【SQLServer】C# blazor
経緯
フラグ処理をDBで管理したいときint型にする人がいる。それに従ったら、つらい目にあったので、記録する。
int型とbool型
C#でint型とbool型の型変換は一つConvert.to〇〇を挟むことになる。しかし、これではbindはうまくいかない。
checkboxにbindさせるときは、できないことはないが、変換したり、変数を余計に用意したりとちょっとしんどい。
bool型をbindさせると問題ないが、今度はSQLServerでint型と定義しているとき、そちらで型と合わなくなることがある。
bit型
SQLServerでboolean型(True/Falseの真偽値)を扱うbit型 | JOHOBASE
SQLServerでbit型を使うとスムーズにbool型への型変換を行ってくれる。
それにbit型は0,1,nullしか入らないので、制約等が少なくなるのも良い点だ。
checkboxへのbindやischeckへの値を入れれるのもよいので、htmlとの親和性があるのがなによりもよい。
少しはまったところ
bit型はint型への変換はできない。
空として下記のように値を用意する場合は注意が必要だ。
select 1 as test from xxx
数値でも文字列でもエラーになる。
select convert(BIT,'true') as test from xxx とすると解決できる。
oracleってどうだったっけ
自分が昔、oracleを使っていた時は、char型を使っていたが、多分、もう少し方法はあっただろう。
BOOLEAN型を使うことができる。