1

MSSQL Server 2008 で ID を生成したいのですが、「PV#000001#SV」のようにプレフィックス + 数値 + サフィックスになります。どちらがユーザー定義になりますか (構成によって異なります) 接頭辞、数値の長さ、接尾辞、および開始番号。数値は毎回増加します。

私はこれを書くために結びました:

Blockquote ALTER PROCEDURE [dbo].[spACC_SELECT_VOUCHER_NUMBER]

 @COMPANY_ID uniqueidentifier,
 @VOUCHER_TYPE INT

はじめに

DECLARE @IS_AUTOMETIC BIT = (ACC_VOUCHER_CONFIG WHERE ACC_VOUCHER_CONFIG.VOUCHER_CONFIG_VALUE=@VOUCHER_TYPE から VOUCHER_CONFIG_NUMBERING_METHOD を選択)

IF(@IS_AUTOMETIC=1)
    BEGIN
        SELECT CASE WHEN SUBSTRING(V.VOUCHER_CODE, 7, 23) IS NULL  
                    THEN CASE WHEN VC.VOUCHER_CONFIG_PREFIX IS NULL THEN '' ELSE VC.VOUCHER_CONFIG_PREFIX END + 
                            RIGHT ('0000000000000'+ CAST( VC.VOUCHER_CONFIG_BEGINING_NUMBER AS VARCHAR), VC.VOUCHER_CONFIG_NUMERIC_WIDTH) + 
                            CASE WHEN VC.VOUCHER_CONFIG_SUFFIX IS NULL THEN '' ELSE VC.VOUCHER_CONFIG_SUFFIX END
                    ELSE CASE WHEN VC.VOUCHER_CONFIG_PREFIX IS NULL THEN '' ELSE VC.VOUCHER_CONFIG_PREFIX END + 
                            RIGHT ('0000000000000'+ CAST((CAST( SUBSTRING(V.VOUCHER_CODE, 7, 23) AS INT)+1) AS VARCHAR), VC.VOUCHER_CONFIG_NUMERIC_WIDTH) +  
                            CASE WHEN VC.VOUCHER_CONFIG_SUFFIX IS NULL THEN '' ELSE VC.VOUCHER_CONFIG_SUFFIX END
                    END AS VOUCHER_CODE FROM  ACC_VOUCHER_CONFIG VC
                    LEFT OUTER JOIN  ACC_VOUCHER V ON  VC.VOUCHER_CONFIG_VALUE =  V.VOUCHER_TYPE                        
                    WHERE  VC.COMPANY_ID=@COMPANY_ID AND VC.VOUCHER_CONFIG_VALUE=@VOUCHER_TYPE      
END    

終わり

数値の長さ/接尾辞を変更すると、機能しません。

ありがとう
ナヒド

4

2 に答える 2

4

苦労している 6 桁の数字については、次のように先行ゼロを追加します。

SELECT RIGHT('00000'+ CONVERT(VARCHAR,Num),6) AS NUM FROM your_table

通し番号はどこNumにありますか。

これにより、先頭に 5 つのゼロが追加され、結果の文字列から右側の 6 文字が取得されます。

カスタム ID 生成の詳細については、次の記事を参照してください。

于 2012-05-06T18:13:24.547 に答える
1

私の提案は、データベースに数値 (つまり int) だけを格納し、それに適したツール (つまり、sprintf または同等の文字列フォーマットを持つプログラミング言語) で ID クライアント側をフォーマットすることです。

于 2012-05-06T22:18:48.097 に答える