MS SQL 具有固定数量符号的列
MS SQL column with fixed number of symbols
我正在使用 MS SQL 并创建一个 table。
其中一列应包含带有 4 个符号的字符串:L001
、L002
不能有更少或更多的符号,例如L01
和 L0001
是错误。
我需要使用哪种类型的数据? CHAR(4)
和 NCHAR(4)
允许我创建 L01
但我的情况是错误的。
您应该使用 CHECK CONSTRAINT
:
可以使用约束
创建 table
CREATE TABLE Test (
ID int NOT NULL,
Code varchar(4),
CHECK (LEN(Code) = 4)
);
或存在更新table:
CREATE TABLE Test (
ID INT NOT NULL,
Code CHAR(4)
);
ALTER TABLE Test
ADD CONSTRAINT CHK_Code_LEN
CHECK (LEN(Code) = 4);
测试:
INSERT INTO Test VALUES (1, 'L001'); -- data inserted
INSERT INTO Test VALUES (2, 'L0011'); -- error raised
INSERT INTO Test VALUES (2, 'L11'); -- error raised
结果:
SELECT * FROM Test;
+====+======+
| ID | Code |
+====+======+
| 1 | L001 |
+----+------+
我正在使用 MS SQL 并创建一个 table。
其中一列应包含带有 4 个符号的字符串:L001
、L002
不能有更少或更多的符号,例如L01
和 L0001
是错误。
我需要使用哪种类型的数据? CHAR(4)
和 NCHAR(4)
允许我创建 L01
但我的情况是错误的。
您应该使用 CHECK CONSTRAINT
:
可以使用约束
CREATE TABLE Test (
ID int NOT NULL,
Code varchar(4),
CHECK (LEN(Code) = 4)
);
或存在更新table:
CREATE TABLE Test (
ID INT NOT NULL,
Code CHAR(4)
);
ALTER TABLE Test
ADD CONSTRAINT CHK_Code_LEN
CHECK (LEN(Code) = 4);
测试:
INSERT INTO Test VALUES (1, 'L001'); -- data inserted
INSERT INTO Test VALUES (2, 'L0011'); -- error raised
INSERT INTO Test VALUES (2, 'L11'); -- error raised
结果:
SELECT * FROM Test;
+====+======+
| ID | Code |
+====+======+
| 1 | L001 |
+----+------+