zoukankan      html  css  js  c++  java
  • SQL中的字符串字段根据某字段实现自增

    --下面的代码生成长度为12的编号,编号以BH开头,前四位数字为col字段,其余6位为流水号。
    --得到新编号的函数
    alter FUNCTION f(@col int)
    RETURNS char(12)
    AS
    BEGIN
        RETURN(SELECT 'BH'+RIGHT(10000+@col,4)+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK) where col=@col) 
    END
    GO
    
    --在表中应用函数
    drop table tb;
    CREATE TABLE tb(
    BH char(12) PRIMARY KEY,
    col int not null)
    
    --插入资料
    BEGIN TRAN
        INSERT tb(BH,col) VALUES(dbo.f(1),1)
        INSERT tb(BH,col) VALUES(dbo.f(2),2)
        INSERT tb(BH,col) VALUES(dbo.f(3),3)
        INSERT tb(BH,col) VALUES(dbo.f(4),4)
        INSERT tb(BH,col) VALUES(dbo.f(1),1)
        INSERT tb(BH,col) VALUES(dbo.f(1),1)
        INSERT tb(BH,col) VALUES(dbo.f(1),1)
        INSERT tb(BH,col) VALUES(dbo.f(2),2)
        INSERT tb(BH,col) VALUES(dbo.f(2),2)
        INSERT tb(BH,col) VALUES((SELECT 'BH'+RIGHT(10000+2,4)+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK) where col=2) ,2)
    COMMIT TRAN
    
    --显示结果
    SELECT * FROM tb
    
    /*结果
    BH0001000001    1
    BH0001000002    1
    BH0001000003    1
    BH0001000004    1
    BH0002000001    2
    BH0002000002    2
    BH0002000003    2
    BH0002000004    2
    BH0003000001    3
    BH0004000001    4
    */
  • 相关阅读:
    OBV15 案例2
    OBV_X3
    涨停板割韭菜走势
    谁有stanford ner训练语料
    CUDA从入门到精通
    MatLab 2014a编译jar包时mcc无法使用的问题
    安装office2013时弹出microsoft setup bootstrapper已停止工作,接着就不能安装了
    Lingo 做线性规划
    C# 连接Paradox DB
    Numpy 数组的切片操作
  • 原文地址:https://www.cnblogs.com/ding2011/p/10557407.html
Copyright © 2011-2022 走看看