是否可以将int值设置为从零开始?例如一个ID号,它应该是0020192,但它只将它保存为20192,我猜可以将它设置为字符串相关的类型,但如果可能的话,让它保持为Int。
00是必需的,因为前3位数字(002)表示员工工作部分,而后4位数字是员工的实际数字(0192,第192位员工)
发布于 2012-05-10 11:54:24
在你的评论中,你会这样说:
实际上,它应该是一个7位数字的id。,
。0090001,前三位将标识员工的工作站,而后四位(0014)将是他的实际员工id。
这意味着您的ID实际上根本不是数字,它们是具有特定内部结构的字符串:
这是一个恰好看起来像数字的字符串。您应该为此使用一个char(7),并添加一个检查约束来强制执行内部格式(或者尽可能多地使用它)。
我也看不到有多少机会用这些in做任何算术或其他类似数字的事情,主要是因为它们实际上不是数字。
使用char(7)的一个好处是,您的应用程序应该将is视为字符串,这样您就不必担心将0112222视为八进制数而产生混淆。
如果可能,您应该使用两个单独的字符串列:
char(3)。char(4)。如果在数据库中的其他地方有这两个对象使用数字in,那么在这里也使用两个数字,并添加外键来约束数据。
执行摘要:您的ID不是数字,所以不要试图将它们存储为数字,它们是看起来像数字的字符串,应该作为字符串存储和操作。
发布于 2012-05-10 11:45:06
试一下这段代码
SELECT RIGHT(CONCAT('0000000', 201920),8) AS ID_Numberhttp://sqlfiddle.com/#!2/7215e/1
发布于 2012-05-10 12:02:58
只有显示问题。
如果您在数据库中的IDNO(自动增量/整数)是201,并且您希望它显示为10个字符的长度格式,例如0000000201
应该是这样的。
select rtrim(replicate('0',abs(len(IDNO)-10)) + CAST(IDNO as varchar)) from IDMaster只需根据您喜欢的显示长度修改10即可。例如2,所以abs(len(IDNO)-2)
干杯。
https://stackoverflow.com/questions/10527078
复制相似问题