てぃぐれのプログラマwiki

ワクワクに従う

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型を使っていたが、多分、もう少し方法はあっただろう。

ORACLE/オラクルPL/SQLリファレンス(データ型)

BOOLEAN型を使うことができる。