2017-12-07 9 views
0

私はカラムssn_nrのテーブルを作成しました。私は9桁のssnを挿入しました。しかし、 '0'から始まるssnは自分自身を削除してしまい、結果的にわずか8桁のssnしか表示されません。ssnのフィールド 'ssn_nr'があるテーブルを作成中に制約を追加しようとしています

例:ssnのように挿入しようとしました:089562715,985624851 ...(9桁)、データ型は 'int' not nullです。実行は成功しましたが、ssnの開始は「0」で自動的に削除されました。

希望の結果:ssnが1つまたは複数の '0'(ssn:002154698、025489635、000548965の場合はexm)で始まっても、すべてのssnが9桁でなければなりません。

+2

'VARCHAR()'社会保障番号を格納するために使用し、数値型ではなく –

+1

これは機密データであるため暗号化して保存する必要があります –

+0

ありがとうございました。 –

答えて

0

数字のデータ型では、先行するゼロは許可されません。だから私はこの列のVarcharとしてデータ型を変更することをお勧めします。

alter table yourtable 
alter column SSN varchar(10) 

その後、フィールドを変更することはできない場合は、あなたがvarchar型として、列をキャストしようとすると、選択しながら、ゼロのの前に追加することができ、既存のレコードの

update yourtable set ssn = right('000000000'+SSN,9) 

にゼロに先立つ追加する列を更新記録。このように

select SSN =right('000000000'+SSN,9) from yourtable 

しかし、私は列を変更することをお勧めします。

+1

数値データ型は重要ではないゼロを格納しますが、これらは通常、クライアントアプリケーションによって抑制されます。私はvarchar/charがSSN、口座番号などのデータのより良い選択であることに同意します.T-SQLで表示するためのデータの書式は反パターンです。 –

0

あなたはint型のフィールドにゼロを挿入することはできません、あなたは(9)varchar型を使用するかのようなものを選択してそれを扱うことができます:

RIGHT('000000000'+ISNULL(ssn_nr,''),9) 
関連する問題