本文介绍了获取max + 1而不删除SQL Server中的零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 您好, 我有一个varchar字段包含此格式为00001,00002等的数字当我尝试使用Max获取下一个数字时 (字段)+ 1我得到一个整数3例如。 如何获得resutl00003而不是3? 谢谢。 我尝试过: 回复修改评论。删除评论。 这是一个工作示例我刚刚想出来,但我认为必须有一个更简单的方法: SELECT TOP(1){fn REPEAT (0,LEN(ItemId) - LEN(MAX(ItemId)+ 1))} + CAST(MAX(ItemId)+ 1 AS varchar(7))AS Expr1 FROM Items GROUP BY ItemId ORDER BY ItemId DESC 最后一个查询给出了正确的结果0004916解决方案 你正在做的事情的问题是它可以在多用户环境中失败。 你必须使用SELECT来获得当前的最高值然后INSERT将下一个数字放入表中。如果第二个客户端在第一个客户端进入INSERT之前执行SELECT会出现问题?你突然有两个客户使用相同的号码。 使用自动递增ID字段。前导零是一个用户界面而不是数据库中的ID号。 Hello,I have a varchar field contains numbers in this format "00001" , "00002" etcwhen I try to get the next number by using Max(Field) + 1 I get an integer "3" for example.how can I get the resutl "00003" instead of "3"?Thank you.What I have tried:Reply Modify the comment. Delete the comment.here's an working example I've just figure it out, but i think there's must be an easier way:SELECT TOP (1) { fn REPEAT(0, LEN(ItemId) - LEN(MAX(ItemId) + 1)) } + CAST(MAX(ItemId) + 1 AS varchar(7)) AS Expr1FROM ItemsGROUP BY ItemIdORDER BY ItemId DESCthe last query gives the correct result "0004916" 解决方案 这篇关于获取max + 1而不删除SQL Server中的零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-24 19:33