简体   繁体   中英

How can I generate ID with Prefix, Numeric Number and suffix?

I want to generate an ID in MSSQL Server 2008. Which will be Prefix + Numeric Number + suffix Like 'PV#000001#SV'. Which will be user defined (depends on configuration ) prefix, numeric length, suffix and starting number. Numeric number will be increased every time.

I tied to write this :

Blockquote ALTER PROCEDURE [dbo].[spACC_SELECT_VOUCHER_NUMBER]

  @COMPANY_ID uniqueidentifier, @VOUCHER_TYPE INT 

AS BEGIN

DECLARE @IS_AUTOMETIC BIT = (SELECT VOUCHER_CONFIG_NUMBERING_METHOD FROM ACC_VOUCHER_CONFIG WHERE ACC_VOUCHER_CONFIG.VOUCHER_CONFIG_VALUE=@VOUCHER_TYPE )

 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 

END

When I change the numeric length / suffix its not working.

Thanks
Nahid

For the six-digit number you're struggling with, add leading zeroes like this:

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

Where Num is your sequential number.

This prepends 5 zeroes and then takes the right 6 characters from the resulting string.

A more detailed writeup of custom ID generation is here:

我的建议是只在数据库中存储一个数字(即int),并使用更适合它的工具(即具有sprintf或等效字符串格式的编程语言)对ID客户端进行格式化。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM