您正在使用IPV4(54.161.98.96)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器 行情 简化版
文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年74元      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2022年 情人节 18
2022年 元宵节 19
2023年 元 旦 339
2022年 春 节 5
 
  • 本类新增
    本类热门文章
    您现在的位置:首页 >> 数据库 >> 内容
    SQL Server自动生成日期加数字的序列号
    内容摘要: USEMASTERGOIFEXISTS(SELECT*FROMdbo.sysdatabasesWHEREname='my_test_database')DROPDATABASE[my_test_database]GOCREATEDATABASE[my_test_database]GOUSE[my_test_database]GOCREATETABLE[my_......
    USEMASTER

    GO

    IFEXISTS(SELECT*FROMdbo.sysdatabasesWHERE

    name='my_test_database')

    DROPDATABASE[my_test_database]

    GO

    CREATEDATABASE[my_test_database]

    GO

    USE[my_test_database]

    GO

    CREATETABLE[my_table]([my_id]VARCHAR(16))

    GO

    --存储过程开始


    CREATEPROCEDUREget_new_id

    @NEW_IDVARCHAR(16)OUTPUT

    AS

    BEGIN

    [email protected]

    [email protected](4)

    [email protected](2)

    [email protected](2)

    --保存取得的当前时间


    [email protected]=GETDATE()

    [email protected]=DATEPART(yyyy,@DATE)

    [email protected]=DATEPART(mm,@DATE)

    [email protected]=DATEPART(dd,@DATE)

    --位数不够的前面补0

    [email protected]=REPLICATE('0',4-LEN(@YYYY))[email protected]

    [email protected]=REPLICATE('0',2-LEN(@MM))[email protected]

    [email protected]=REPLICATE('0',2-LEN(@DD))[email protected]

    --取出表中当前日期的已有的最大ID

    [email protected]_ID=NULL

    [email protected]_ID=[my_id]FROM[my_table]WHERE[my_id]LIKE

    @[email protected][email protected]+'%'ORDERBY[my_id]DESC

    --如果未取出来

    [email protected]_IDISNULL

    --说明还没有当前日期的编号,则直接从1开始编号

    [email protected]_ID=(@[email protected][email protected]+'00000001')

    --如果取出来了


    ELSE

    BEGIN

    [email protected](8)

    --取出最大的编号加上1


    [email protected]=CONVERT(VARCHAR,(CONVERT(INT,RIGHT(@NEW_ID,8))+1))

    --因为经过类型转换,丢失了高位的0,需要补上

    [email protected]=REPLICATE('0',8-LEN(@NUM))[email protected]

    --最后返回日期加编号


    [email protected][email protected][email protected][email protected][email protected]

    END

    END

    GO

    --执行20次调用及插入数据测试


    [email protected]

    [email protected]=0

    [email protected]<20

    BEGIN

    [email protected]_IDVARCHAR(16)

    [email protected]_IDOUTPUT

    INSERTINTO[my_table]([my_id])VALUES(@NEW_ID)

    [email protected][email protected]+1

    END

    SELECT*FROM[my_table]

    GO

    上一篇:MySQL中重建主键索引 下一篇:SQL2005查看死锁存储过程sp_who_lock
    发布日期:2021/12/29
    手机扫二维码直达本页
    发布时间:12:41:04
    点击:349
    录入:齐天大圣
    相关文章
    Baidu
    YiJiaCMS 6.1.0.10988 Build 21.12.28(MSSQL) 闽ICP备05000814号-1
    本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护

    Copyright©2000-2022