1

ゼロから始まる int 値を設定することは可能でしょうか? 例は ID 番号のようなものです0020192が、それは としてのみ保存され20192ます。文字列関連の型として設定することは可能だと思いますが、可能であれば Int のままにします。

最初の 3 桁 (002) は従業員の作業セクションを示し、最後の 4 桁は従業員の実際の番号 (0192、192 番目の従業員) になるため、00 が必要です。

4

3 に答える 3

4

あなたのコメントであなたはこう言います:

実際には 7 桁の ID になります。0090001 の場合、最初の 3 桁 (009) は従業員のワークステーションを識別し、最後の 4 桁 (0014) は従業員の実際の従業員 ID です。

つまり、ID は実際には数字ではなく、特定の内部構造を持つ文字列です。

  1. 7 文字の長さ。
  2. すべての文字は数字です。
  3. 最初の 3 文字はワークステーションを識別します。
  4. 最後の 4 文字は従業員を識別します。

これはたまたま数字のように見える文字列です。これには a を使用しchar(7)、CHECK 制約を追加して、内部形式 (またはできる限り多くの形式) を強制する必要があります。

また、これらの ID を使用して算術演算やその他の数値的な処理を行う可能性はあまりないと思います。実際にはこれらの ID は数値ではないためです。

これを使用することの嬉しい副作用は、アプリケーションが ID を文字列として扱う必要があり、何かが混乱して 8 進数char(7)であると考えてしまうことを心配する必要がないことです。0112222

可能であれば、2 つの別個の文字列列を使用する必要があります。

  1. char(3)ワークステーション IDの A。
  2. そしてchar(4)、従業員 ID の a。

数値 ID を使用してデータベースの他の場所にこれら 2 つのオブジェクトがある場合は、ここでも 2 つの数値を使用し、外部キーを追加してデータを制約します。

エグゼクティブ サマリー: ID は数字ではないため、数字として保存しようとしないでください。数字のように見える文字列であり、文字列として保存および操作する必要があります。

于 2012-05-10T03:54:24.150 に答える
2

このコードを試してみてください

SELECT RIGHT(CONCAT('0000000', 201920),8) AS ID_Number

http://sqlfiddle.com/#!2/7215e/1

于 2012-05-10T03:45:06.173 に答える
0

表示の問題のみ。

データベース内のIDNO(autoincrement / int)が201で、10文字の長さの形式(例:00000000201)で表示したい場合

このようにする必要があります。

select rtrim(replicate('0',abs(len(IDNO)-10)) + CAST(IDNO as varchar)) from IDMaster

表示の好みの長さで10を変更するだけです。例:2、したがってabs(len(IDNO)-2)

乾杯。

于 2012-05-10T04:02:57.547 に答える