SQL SERVER 如何處理帶字母的自增列

來源:互聯網
上載者:User
  • --需求說明:   
  • /*  
  • id         col  
  • ---------- ----------   
  • AB00001    a  
  • AB00002    b  
  • --當再插入資料的時候讓id自動變成AB00003   
  • */  
  •   
  • --1.求最大值法(高並發時不適用,只是介紹個思路)   
  • --測試資料   
  •   
  • if object_id('[macotb]') is not null   
  • drop table [macotb]  
  • create table [macotb] (id varchar(7),col varchar(1))  
  • insert into [macotb]  
  • select 'AB00001','a' union all  
  • select 'AB00002','b'  
  •   
  • declare @max varchar(7)  
  • select @max='AB'+right('00000'+ltrim(max(replace(id,'AB','')+1)),5) from [macotb]  
  • insert into [macotb] select @max,'c'  
  •   
  • select * from [macotb]  
  • /*  
  • id      col  
  • ------- ----   
  • AB00001 a  
  • AB00002 b  
  • AB00003 c  
  • */  
  •   
  • --2.利用@@identity,分步處理   
  • if object_id('[macotb]') is not null   
  • drop table [macotb]  
  •   
  • create table [macotb] ([no] int identity,id varchar(7),col varchar(1))  
  • insert into [macotb]  
  • select 'AB00001','a' union all  
  • select 'AB00002','b'  
  •   
  • insert into [macotb](col) select 'c'  
  • update [macotb]   
  • set id='AB'+right('00000'+ltrim([no]),5) where [no]=@@identity  
  •   
  • select id,col from [macotb]  
  • /*  
  • id      col  
  • ------- ----   
  • AB00001 a  
  • AB00002 b  
  • AB00003 c  
  • */  
  •   
  • --3.直接添加運算列   
  • if object_id('[macotb]') is not null   
  • drop table [macotb]  
  •   
  • create table [macotb]   
  • (  
  •     [no] int identity,  
  •     id as ('AB'+right('00000'+ltrim([no]),5)),  
  •     col varchar(1)  
  • )  
  •   
  • insert into [macotb](col) select 'a' union all select 'b'  
  •   
  • select id,col from [macotb]  
  • /*  
  • id           col  
  • ------------ ----   
  • AB00001      a  
  • AB00002      b  
  • */  
  •   
  • insert into [macotb](col) select 'c' union all select 'd'  
  • select id,col from [macotb]  
  • /*  
  • id           col  
  • ------------ ----   
  • AB00001      a  
  • AB00002      b  
  • AB00003      c  
  • AB00004      d  
  • */  
  •   
  • --建議使用第三種方式!  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.