2017-06-22 4 views
0

ハードコードされた値が '04200001000000'で、最後の番号を自動増分したい場合。私はこの機能に関して何もオンラインで見つけることができません。私たちは本当に多くの情報が必要ですが、列の種類に応じて、これは働くかもしれ特定の番号がすでに使用されている場合、自動増分シーケンスを追加する方法

0420000100000001 
0420000100000002 
0420000100000003 
0420000100000004 
0420000100000005 
0420000100000006 
0420000100000007 
0420000100000008 
0420000100000009 
0420000100000010 
+0

を試してみてください? –

+0

10行があるとき、15番目のCharは "1"になります。 100行がある場合、14番目の文字は1、15th 0、16th 0になります。@ GordonLinoff – Carl

答えて

0

:あなたの従業員を想定し

ALTER TABLE myTable ALTER COLUMN columnName IDENTITY (04200001000001, 1);

+0

このEmpNoは、私が作成したテーブルの特定の列です。現在、列は次のように設定されています:TabEmpNo = '04200001000001'これはハードコードされた値です。この値は、行数に応じて最後の桁を除き、すべての従業員で同じになります。だから5行がある場合:04200001000001,04200001000002,04200001000003,04200001000004,04200001000005 – Carl

+0

私はこれらの値を自動的にインクリメントするために何とかcase文を追加できる方法はありますか? – Carl

+0

カラムのタイプは何ですか?それが何らかのタイプの数であれば、上記はうまくいくはずです。実行したら、新しい行を追加するときに 'EmpNo'を空白のままにしておけば、データベースは自動的に次の番号を入力します。 –

-1

私は、SQLサーバー2014

例を使用しています"number"は実際には文字データ型です(先頭にゼロが含まれているため)、SEQUENCEを使用する可能性があります。

CREATE SEQUENCE dbo.EmpNumbers 
AS BIGINT 
START WITH 4200001000000 
INCREMENT BY 1 
MIN VALUE 4200001000000 
MAX VALUE 9999999999999 
CACHE 10 
; 

これを使用して、新しい従業員番号を生成することができます。

SELECT 
    EmpName 
    , '0' + CAST((NEXT VALUE FOR dbo.EmpNumbers) AS CHAR(13)) AS NewEmpNumber 
FROM NewEmployees 
0

は、あなたが10行を取得するときに何が起こるこの

DECLARE INT @CurrentPos = (SELECT MAX(CAST(TabEmpNo AS INT)) 
    FROM Table); 

SET @CurrentPos = SELECT IIF(@CurrentPos IS NULL, 4200001000000, @CurrentPos); 

WITH CTE 
AS 
(
    SELECT Col1, 
     ROW_NUMBER() OVER (ORDER BY Col1) AS RN 
    FROM TABLE 
) 
INSERT INTO TABLE 
(
    Col1, 
    TabEmpNo 
) 
SELECT Col1, 
    CONCAT('0', CAST(RN + @CurrentPos AS VARCHAR(13))) AS TabEmpNo 
FROM CTE 
関連する問題