zoukankan      html  css  js  c++  java
  • SQL SERVER 如何处理带字母的自增列--【叶子】

    1. --需求说明:  
    2. /*  
    3. id         col  
    4. ---------- ----------  
    5. AB00001    a  
    6. AB00002    b  
    7. --当再插入数据的时候让id自动变成AB00003  
    8. */  
    9.   
    10. --1.求最大值法(高并发时不适用,只是介绍个思路)  
    11. --测试数据  
    12.   
    13. if object_id('[macotb]'is not null   
    14. drop table [macotb]  
    15. create table [macotb] (id varchar(7),col varchar(1))  
    16. insert into [macotb]  
    17. select 'AB00001','a' union all  
    18. select 'AB00002','b'  
    19.   
    20. declare @max varchar(7)  
    21. select @max='AB'+right('00000'+ltrim(max(replace(id,'AB','')+1)),5) from [macotb]  
    22. insert into [macotb] select @max,'c'  
    23.   
    24. select * from [macotb]  
    25. /*  
    26. id      col  
    27. ------- ----  
    28. AB00001 a  
    29. AB00002 b  
    30. AB00003 c  
    31. */  
    32.   
    33. --2.利用@@identity,分步处理  
    34. if object_id('[macotb]'is not null   
    35. drop table [macotb]  
    36.   
    37. create table [macotb] ([noint identity,id varchar(7),col varchar(1))  
    38. insert into [macotb]  
    39. select 'AB00001','a' union all  
    40. select 'AB00002','b'  
    41.   
    42. insert into [macotb](col) select 'c'  
    43. update [macotb]   
    44. set id='AB'+right('00000'+ltrim([no]),5) where [no]=@@identity  
    45.   
    46. select id,col from [macotb]  
    47. /*  
    48. id      col  
    49. ------- ----  
    50. AB00001 a  
    51. AB00002 b  
    52. AB00003 c  
    53. */  
    54.   
    55. --3.直接添加运算列  
    56. if object_id('[macotb]'is not null   
    57. drop table [macotb]  
    58.   
    59. create table [macotb]   
    60. (  
    61.     [noint identity,  
    62.     id as ('AB'+right('00000'+ltrim([no]),5)),  
    63.     col varchar(1)  
    64. )  
    65.   
    66. insert into [macotb](col) select 'a' union all select 'b'  
    67.   
    68. select id,col from [macotb]  
    69. /*  
    70. id           col  
    71. ------------ ----  
    72. AB00001      a  
    73. AB00002      b  
    74. */  
    75.   
    76. insert into [macotb](col) select 'c' union all select 'd'  
    77. select id,col from [macotb]  
    78. /*  
    79. id           col  
    80. ------------ ----  
    81. AB00001      a  
    82. AB00002      b  
    83. AB00003      c  
    84. AB00004      d  
    85. */  
    86.   
    87. --叶子建议使用第三种方式!  
  • 相关阅读:
    心跳监控系统
    Mysql主从配置+读写分离(转)
    linux系统文件属性-硬连接、软连接
    巧用MySQL InnoDB引擎锁机制解决死锁问题(转)
    mysql数据库编码、字段编码、表编码 专题
    MySQL中select * for update锁表的问题(转)
    Android setTextColor无效_安卓setTextColor()的参数设置方式
    Android如何查看应用签名信息--微信平台开发应用的签名
    Android 生成keystore,两种方式
    MyEclipse + Maven开发Web工程的详细配置过程
  • 原文地址:https://www.cnblogs.com/douqiumiao/p/3365313.html
Copyright © 2011-2022 走看看