2

私の SQL Server テーブルには、次のように定義された列があります。

TicketNo varchar(5)

このテーブルの行は、さまざまなソースからのいくつかのバルク ロード ファイルによって挿入されます。

現在、バルク ロード入力ファイルを誰が準備したかによって、TicketNo先頭に 0 がある場合とない場合があります。

TicketNoテーブルに INSERTS を適用して、常に先行ゼロが設定されるようにするにはどうすればよいですか。

TicketNo = RIGHT('00000'+TicketNo, 5)
4

2 に答える 2

2

チェック制約のある char(5) 列を使用できます。

create table YourTable
(
  TicketNo char(5) check (patindex('%[^0-9]%', TicketNo) = 0)
)

アップデート:

Martin Smithによるこの回答を使用すると、代わりに次のようになり、0-9 のみが許可されていることを確認できます。

create table YourTable
(
  TicketNo char(5) collate Latin1_General_CS_AS check (patindex('%[^0123456789]%', TicketNo) = 0) 
)
于 2013-03-26T18:09:26.980 に答える
1

それをどのように実施するかは難しい問題です。私の最初の方法は、ストアド プロシージャを作成し、それを介してすべての挿入を強制することです。次に、rsのソリューションを使用できます。

それ以外に、先行ゼロをチェックする挿入/更新トリガーを作成できます。

于 2013-03-26T18:08:37.133 に答える