0

tableのフィールドをチェックして、フィールドに数字CHAR(X)のみが含まれていることを確認するにはどうすればよいですか? 私が考えることができるものはすべて非常に不格好です。not NULLerror

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 に答える