0

如何检查 a 中的字段table以验证该CHAR(X)字段是否仅包含数字、和 X 位并返回每个故障not NULL的特定值?error我能想到的任何东西都非常笨拙。

4

2 回答 2

0

尝试使用TRY_CONVERT语法检查 null 的数据验证

SELECT TRY_CONVERT(int,'21245') 

类似下面的内容可能有助于匹配不正确的字段

SELECT * FROM  Table_1 where LTRIM(RTRIM(fieldname)) like '%[^0-9]%'
于 2012-08-16T20:29:36.297 回答
0

结果集

insert into CheckConstraint(Digit)values(1) //Failed

insert into CheckConstraint(Digit)values('ws') //Failed

insert into CheckConstraint(Digit)values(12345) //Passed

为此,您的表应该是这样的,以避免 Nullable 值

CREATE TABLE CheckConstraint
(
  Digit Char(5) Not Null
)

创建函数

Create FUNCTION Validations() RETURNS INT AS BEGIN
  DECLARE @ret INT  = 0 ;
  SELECT @ret = IsNull(COUNT(Digit), 0) FROM CheckConstraint 
  WHERE Digit not like '[0-9]%'
  RETURN IsNUll(@ret, 0);
END;

避免非数字字符的约束

alter TABLE CheckConstraint
  add CONSTRAINT CheckValidations CHECK ((dbo.Validations() = 0));

避免少于或多于 5 个字符的约束

ALTER TABLE [dbo].CheckConstraint
ADD CONSTRAINT [MinLengthConstraint] CHECK (DATALENGTH(Digit) = 5)
于 2012-08-16T20:43:41.607 回答