如何检查table
中的字段以确认CHAR(X)
字段仅包含数字not NULL
,并且具有X位数并返回特定error
每个故障?
我能想到的任何东西都非常笨重。
答案 0 :(得分:0)
尝试使用TRY_CONVERT
进行数据验证,其中语法检查null,如
SELECT TRY_CONVERT(int,'21245')
以下内容可能有助于匹配不正确的字段
SELECT * FROM Table_1 where LTRIM(RTRIM(fieldname)) like '%[^0-9]%'
答案 1 :(得分:0)
insert into CheckConstraint(Digit)values(1) //Failed
insert into CheckConstraint(Digit)values('ws') //Failed
insert into CheckConstraint(Digit)values(12345) //Passed
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));
ALTER TABLE [dbo].CheckConstraint
ADD CONSTRAINT [MinLengthConstraint] CHECK (DATALENGTH(Digit) = 5)