bit
データ型を使用する列があります。エンドユーザーはN/Aオプションを望んでいますので、前に "はい/いいえ"をキャプチャする前に何をしていましたか(1がはい、0がノー)3つのオプションが必要です。 varchar
のテキストと同じです。SQL Serverのビットデータ型をVarCharに変換します。
列のデータ型をbit
からvarchar
に変更する方法はありますか、また、現在のレコードデータを更新して、0の場合は「いいえ」に、1の場合は「はい」に変更しますか?
bit
データ型を使用する列があります。エンドユーザーはN/Aオプションを望んでいますので、前に "はい/いいえ"をキャプチャする前に何をしていましたか(1がはい、0がノー)3つのオプションが必要です。 varchar
のテキストと同じです。SQL Serverのビットデータ型をVarCharに変換します。
列のデータ型をbit
からvarchar
に変更する方法はありますか、また、現在のレコードデータを更新して、0の場合は「いいえ」に、1の場合は「はい」に変更しますか?
NULL
を「n/a」と意味するのはなぜですか?
それ以外の場合は、値0,1,2(おそらく1,2,3)とその意味を含むルックアップテーブルを使用してTINYINT
を使用します。次に、2つのテーブルの間にFKを追加して、それらの値だけが入力されるようにします。
最後のの選択肢は、CHAR(1)
の列を使用します。これはで、と指定した場合は、Latin1_General_100_BIN2
などのバイナリ照合も指定されます。バイナリ照合は、他の2つのオプションよりもパフォーマンスが低下しないようにします。バイナリ照合がなければ、文字列は値を比較しますが、余分な時間がかかりますが、この使用法には意味がありません。 AFTER INSERT, UPDATE
最初にUPPER()
にこの値を一致させ、すべての値がY
、N
、またはA
(「該当なし」)のいずれかであることを強制する必要があります。これは、0,1、および2よりも読みやすく(TINYINT
を介して)、検索と同様に効率的です。また、1バイトだけでも、大文字のみを指定することを覚えておく必要があります。そうしないと、期待した結果が得られない可能性があります。 。
あなただけ遅く;-)を取得してシステムを気にしない場合を除き、VARCHAR(3)
を使用し、完全な値N/A
/Yes
/No
を格納するために、すべてのでない理由はありません。
実際のchar(3)
またはscutzly
により示唆されるようにFKテーブルにtinyint型を使用効率的なより多くのスペースとなり、私は死んでいた死んでびっくりしましたが、私はちょうど(3をcharにビットを変換することができますすることができます)を右クリックしてSSMSでデザインします。
Alter Table TableName
Alter Column ColumnName Varchar(3)
Update TableName
Set ColumnName = 'Yes'
Where ColumnName = '1'
Update TableName
Set ColumnName = 'No'
Where ColumnName = '0'
私はdownvoteするつもりはありませんが、この変更を行うことには全く利点がないことを指摘します。実際には、このフィールドに対するクエリが遅くなり、ディスクとバッファプールの両方でより多くの領域が必要になります。 –
+1000これに対して。ビットデータ型は2つの値を持たず、3.1,0、NULLを持ちます。 –
私はDBだけを残してコードを変更することができるので、優れたアイデアと実装が簡単です。ありがとう! –
@SeanLangeありがとう:) Silverlightの開発/ XAMLを使いこなしたことがあるのかどうかはわかりませんが、それはフォーム要素として三角形のブールチェックボックスをどこで提供しているのか分かりませんでした。あなたは実際にそれをチェックし、チェックを外して、それを解除することができます!チェックを外すと、チェックボックスとは明らかに異なるチェックボックスに表示されます。それはかなり素晴らしかったです。 –