2

我的 SQL Server 表有一个列定义为:

TicketNo varchar(5)

此表中的行由来自不同来源的一些批量加载文件插入。

现在,取决于谁准备了批量加载输入文件,有时TicketNo有前导 0,有时没有。

如何对表强制执行 INSERTS,以便TicketNo始终使用前导零设置,例如:

TicketNo = RIGHT('00000'+TicketNo, 5)
4

2 回答 2

2

您可以使用带有检查约束的 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) 
)
于 2013-03-26T18:09:26.980 回答
1

你如何执行它是一个棘手的问题。我的第一个方法是创建一个存储过程并强制所有插入通过它进行。然后你可以使用rs的解决方案。

除此之外,您可以创建一个插入/更新触发器来检查前导零。

于 2013-03-26T18:08:37.133 回答