73.十六进制

た 入场券 2024-02-19 18:02 160阅读 0赞
  1. --创建自定义函数,得到新的ID
  2. create function f_getid()
  3. returns varchar(12)
  4. as
  5. begin
  6. declare @id varchar(12)
  7. declare @st varchar(16),@id1 varchar(1),@id2 varchar(1),@i int
  8. set @st='0123456789ABCDEF'
  9. select @id=max(主键) from tb
  10. if @id is null
  11. set @id='03000001-P01'
  12. else
  13. select @id1=substring(@id,11,1),@id2=right(@id,1)
  14. ,@id=left(@id,10)
  15. ,@i=charindex(@id2,@st)
  16. ,@id2=case @i when 16 then '0' else substring(@st,@i+1,1) end
  17. ,@id1=case @i when 16 then substring(@st,charindex(@id1,@st)+1,1)
  18. else @id1 end
  19. ,@id=@id+@id1+@id2
  20. return(@id)
  21. end
  22. go
  23. --创建测试表
  24. create table tb(主键 varchar(12) not null primary key default dbo.f_getid()
  25. ,aa int)
  26. --插入数据测试
  27. insert into tb(aa) values(1)
  28. insert into tb(aa) values(2)
  29. insert into tb(aa) values(3)
  30. insert into tb(aa) values(4)
  31. insert into tb(aa) values(5)
  32. insert into tb(aa) values(6)
  33. insert into tb(aa) values(7)
  34. insert into tb(aa) values(8)
  35. insert into tb(aa) values(9)
  36. insert into tb(aa) values(10)
  37. insert into tb(aa) values(11)
  38. insert into tb(aa) values(12)
  39. insert into tb(aa) values(13)
  40. insert into tb(aa) values(14)
  41. insert into tb(aa) values(15)
  42. insert into tb(aa) values(16)
  43. insert into tb(aa) values(17)
  44. insert into tb(aa) values(18)
  45. --显示结果
  46. select * from tb
  47. go
  48. --删除测试环境
  49. drop table tb
  50. drop function f_getid

发表评论

表情:
评论列表 (有 0 条评论,160人围观)

还没有评论,来说两句吧...

相关阅读

    相关 73. 矩阵置零

    给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用[原地][Link 1]算法。 示例 1: 输入: [

    相关 十六进制

    概念: 十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或af)表示,其中:AF表示10~15,这些称作十六进制数字。

    相关 73. Rebranding Lotus Notes

    Lotus Notes的官方网站和这个软件平台一样坚持着向后兼容的原则,多少年来外观上鲜有变化,在不断改头换面美化重构的网站世界里显得像化石一样古老顽固。从R8推出以来,这个特