是否可以将int值设置为以零开头?示例将是一个ID号,它将是0020192
,但它只将其保存为20192
,我想可以将其设置为字符串相关类型,但如果可能,请将其保留为Int。
将需要00,因为前3位数字(002)表示员工工作部分,而最后4位数字表示员工的实际数字(0192,第192名员工)
答案 0 :(得分:4)
在评论中你这样说:
实际上它将是一个七位数的id。 0090001,前三位数字(009)将标识员工的工作站,而最后4位数字(0014)将是他的实际员工ID。
这说明你的ID根本不是数字,它们是具有特定内部结构的字符串:
这是一个恰好看起来像一个数字的字符串。您应该使用char(7)
来添加一个CHECK约束来强制执行内部格式(或者尽可能多地使用它)。
我也没有太多机会用这些ID做任何算术或其他数字的事情,主要是因为它们实际上并不是数字。
使用char(7)
的一个令人愉快的副作用是你的应用程序应该将ID视为字符串,你不必担心会让人感到困惑,并认为0112222
是一个八进制数字
如果可能,您应该使用两个单独的字符串列:
char(3)
。char(4)
。如果数据库中的其他对象使用数字ID,那么也可以在这里使用两个数字,并添加外键来约束数据。
执行摘要:您的ID不是数字,所以不要试图将它们存储为数字,它们是看起来像数字的字符串,应该作为字符串进行存储和操作。
答案 1 :(得分:2)
答案 2 :(得分:0)
仅显示问题。
如果数据库中的IDNO(autoincrement / int)为201,并且您希望将其显示为10个字符长的格式,例如0000000201
应该是这样的。
select rtrim(replicate('0',abs(len(IDNO)-10)) + CAST(IDNO as varchar)) from IDMaster
只需在首选显示长度上修改10即可。 例如2,所以abs(len(IDNO)-2)
欢呼声。