我的 SQL Server 表有一个列定义为:
TicketNo varchar(5)
此表中的行由来自不同来源的一些批量加载文件插入。
现在,取决于谁准备了批量加载输入文件,有时TicketNo
有前导 0,有时没有。
如何对表强制执行 INSERTS,以便TicketNo
始终使用前导零设置,例如:
TicketNo = RIGHT('00000'+TicketNo, 5)
我的 SQL Server 表有一个列定义为:
TicketNo varchar(5)
此表中的行由来自不同来源的一些批量加载文件插入。
现在,取决于谁准备了批量加载输入文件,有时TicketNo
有前导 0,有时没有。
如何对表强制执行 INSERTS,以便TicketNo
始终使用前导零设置,例如:
TicketNo = RIGHT('00000'+TicketNo, 5)
您可以使用带有检查约束的 char(5) 列。
create table YourTable
(
TicketNo char(5) check (patindex('%[^0-9]%', TicketNo) = 0)
)
更新:
使用Martin Smith的这个答案,它可能看起来像这样,以确保只允许 0-9。
create table YourTable
(
TicketNo char(5) collate Latin1_General_CS_AS check (patindex('%[^0123456789]%', TicketNo) = 0)
)
你如何执行它是一个棘手的问题。我的第一个方法是创建一个存储过程并强制所有插入通过它进行。然后你可以使用rs的解决方案。
除此之外,您可以创建一个插入/更新触发器来检查前导零。