是否可以将 int 值设置为从零开始?示例就像一个 ID 号,0020192
但它只将其保存20192
为
00 是必需的,因为前 3 位数字 (002) 表示员工工作部分,而后 4 位是员工的实际编号(0192,第 192 位员工)
是否可以将 int 值设置为从零开始?示例就像一个 ID 号,0020192
但它只将其保存20192
为
00 是必需的,因为前 3 位数字 (002) 表示员工工作部分,而后 4 位是员工的实际编号(0192,第 192 位员工)
在您的评论中,您这样说:
实际上它将是一个七位数的ID。0090001,前三位 (009) 将标识员工的工作站,而后四位 (0014) 将是他的实际员工 ID。
也就是说,您的 ID 实际上根本不是数字,它们是具有特定内部结构的字符串:
这是一个恰好看起来像数字的字符串。您应该char(7)
为此使用 a 并添加一个 CHECK 约束来强制执行内部格式(或尽可能多地使用它)。
我也看不到用这些 ID 做任何算术或其他数字的事情的机会很大,主要是因为它们实际上不是数字。
使用它的一个令人愉快的副作用char(7)
是您的应用程序应该将 ID 视为字符串,您不必担心会混淆并认为这0112222
是一个八进制数。
如果可能,您应该使用两个单独的字符串列:
char(3)
为工作站 ID。char(4)
用于员工 ID。如果您在数据库的其他地方使用数字 ID 有这两个对象,那么在这里也使用两个数字并添加外键来约束您的数据。
执行摘要:您的 ID 不是数字,因此不要尝试将它们存储为数字,它们是看起来像数字的字符串,应该作为字符串存储和操作。
只是显示问题。
如果您在数据库中的 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)
干杯。