SQL 设计一个 table 的查询,其中有一列只接受 1 个字母和 2 个数字,共 3 个字符

SQL Query for designing a table which has a column that accepts only 1 alphabet and 2 digits total 3 characters

如果我们创建一个 table x 并且它有一个 y 列,那么 y 列应该只接受包含字母数字值的值,例如 "A39".

CREATE TABLE X
(
  Y Text not null check (length(Y)('[A-Z]','[0-9]','[0-9]' ,3)) 
); 

我无法运行这段代码,我不确定是否是这样,我应该在这里使用哪个约束?

您需要使用 GLOB 进行此检查:

sqlite> CREATE TABLE x (y TEXT NOT NULL CHECK (y GLOB '[A-Z][0-9][0-9]'));
sqlite> INSERT INTO x VALUES ('A01');
sqlite> INSERT INTO x VALUES ('A01Z');
Error: CHECK constraint failed: x

The GLOB operator is similar to LIKE but uses the Unix file globbing syntax for its wildcards. Also, GLOB is case sensitive, unlike LIKE.

因此,如果您也想要小写字母,请使用 [A-Za-z] 而不是 [A-Z]