我想在MSSQL Server 2008中生成一个ID。它将是Prefix + Numeric Number +后缀,如'PV#000001#SV'。这将是用户定义的(取决于配置)前缀,数字长度,后缀和起始编号。每次都会增加数字编号。
我打算写下这个:
块引用 更改程序[dbo]。[spACC_SELECT_VOUCHER_NUMBER]
@COMPANY_ID uniqueidentifier, @VOUCHER_TYPE INT
AS BEGIN
DECLARE @IS_AUTOMETIC BIT =(SELECT VOUCHER_CONFIG_NUMBERING_METHOD 从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
当我更改数字长度/后缀时,它不起作用。
感谢
Nahid
答案 0 :(得分:4)
对于你正在努力的六位数字,添加这样的前导零:
SELECT RIGHT('00000'+ CONVERT(VARCHAR,Num),6) AS NUM FROM your_table
Num
是您的序号。
这会预先设置5个零,然后从结果字符串中取出正确的6个字符。
更详细的自定义ID生成说明如下:
答案 1 :(得分:1)
我的建议是在数据库中存储一个数字(即int),并使用更适合它的工具(即具有sprintf或等效字符串格式的编程语言)格式化ID客户端。