ゼロから始まる int 値を設定することは可能でしょうか? 例は ID 番号のようなものです0020192
が、それは としてのみ保存され20192
ます。文字列関連の型として設定することは可能だと思いますが、可能であれば Int のままにします。
最初の 3 桁 (002) は従業員の作業セクションを示し、最後の 4 桁は従業員の実際の番号 (0192、192 番目の従業員) になるため、00 が必要です。
ゼロから始まる int 値を設定することは可能でしょうか? 例は ID 番号のようなものです0020192
が、それは としてのみ保存され20192
ます。文字列関連の型として設定することは可能だと思いますが、可能であれば Int のままにします。
最初の 3 桁 (002) は従業員の作業セクションを示し、最後の 4 桁は従業員の実際の番号 (0192、192 番目の従業員) になるため、00 が必要です。
あなたのコメントであなたはこう言います:
実際には 7 桁の ID になります。0090001 の場合、最初の 3 桁 (009) は従業員のワークステーションを識別し、最後の 4 桁 (0014) は従業員の実際の従業員 ID です。
つまり、ID は実際には数字ではなく、特定の内部構造を持つ文字列です。
これはたまたま数字のように見える文字列です。これには a を使用しchar(7)
、CHECK 制約を追加して、内部形式 (またはできる限り多くの形式) を強制する必要があります。
また、これらの ID を使用して算術演算やその他の数値的な処理を行う可能性はあまりないと思います。実際にはこれらの ID は数値ではないためです。
これを使用することの嬉しい副作用は、アプリケーションが ID を文字列として扱う必要があり、何かが混乱して 8 進数char(7)
であると考えてしまうことを心配する必要がないことです。0112222
可能であれば、2 つの別個の文字列列を使用する必要があります。
char(3)
ワークステーション IDの A。char(4)
、従業員 ID の a。数値 ID を使用してデータベースの他の場所にこれら 2 つのオブジェクトがある場合は、ここでも 2 つの数値を使用し、外部キーを追加してデータを制約します。
エグゼクティブ サマリー: ID は数字ではないため、数字として保存しようとしないでください。数字のように見える文字列であり、文字列として保存および操作する必要があります。
このコードを試してみてください
SELECT RIGHT(CONCAT('0000000', 201920),8) AS ID_Number
表示の問題のみ。
データベース内の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)
乾杯。