当前位置: 代码迷 >> Sql Server >> 如何使SQL中的字符串字段实现自增 该字段设为主键
  详细解决方案

如何使SQL中的字符串字段实现自增 该字段设为主键

热度:98   发布时间:2016-04-27 12:53:14.0
怎么使SQL中的字符串字段实现自增 该字段设为主键
怎么使SQL中的字符串字段实现自增 该字段设为主键 比如
01
02
03
。。。
99

------解决方案--------------------
先以1,2,3自增,
select 的时候转换

select right('00'+'1',2)
------解决方案--------------------
既然做起来很麻烦,就要回过头想想这个要求的合理性和必要性
------解决方案--------------------
参考:
http://www.cnblogs.com/insus/archive/2011/08/21/2147645.html
------解决方案--------------------
SQL code
--下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号。--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(8)ASBEGIN    RETURN(SELECT 'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK))ENDGO--在表中应用函数CREATE TABLE tb(BH char(8) PRIMARY KEY DEFAULT dbo.f_NextBH(),col int)--插入资料BEGIN TRAN    INSERT tb(col) VALUES(1)    INSERT tb(col) VALUES(2)    INSERT tb(col) VALUES(3)    DELETE tb WHERE col=3    INSERT tb(col) VALUES(4)    INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)COMMIT TRAN--显示结果SELECT * FROM tb/*--结果BH         col ---------------- ----------- BH000001  1BH000002  2BH000003  4BH000004  14--*/
------解决方案--------------------
SQL code
参考:Id, FormatId, F1 ,F2Id序号我设了自动加一,FormatId我想他也象这样"SL000001",当Insert时就加1,FormatId我想他也能自动加一"SL000001","SL000002"...能用一条sql什么办法实现.最好不要用中间表。有什么好方法?谢谢!create table #test(id int identity,FormatId as 'SL'+right(10000000+id,6),F1 varchar(50))goinsert #test(F1) select '1'union all select '2'select * from #testdrop table #test/*id          FormatId       F1   ----------- -------------- -----1           SL000001       12           SL000002       2(所影响的行数为 2 行)*/
------解决方案--------------------
探讨
先以1,2,3自增,
select 的时候转换

select right('00'+'1',2)

------解决方案--------------------
这要看lz需要多少位了,一般就用right函数进行补0
  相关解决方案