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