2017-02-22 76 views
-1

我试图创建一个只有CHAR(9)或EMPTY VALUE(空字符串'')的属性(它是主键)的表,如下所示:在CHAR中插入空值,SQL

create table person(
number CHAR (9) CHECK (number SIMILAR TO '[0-9]{2}-[0-9]{6}' OR number LIKE '_%') 
); 

而且我有相似试过它两个条件

create table person(
    number CHAR (9) CHECK (number SIMILAR TO '[0-9]{2}-[0-9]{6}' OR number SIMILAR TO '_%') 
    ); 

,但两种方式都不能正常工作

回答

0

是你想要的其中之一吗?

col CHAR(9) CHECK (col SIMILAR TO '[0-9]{2}-[0-9]{6}' OR col = '') 
col CHAR(9) CHECK (col SIMILAR TO '[0-9]{2}-[0-9]{6}' OR col IS NULL) 

(“数字”是一个字符串值,一个可怕的名字。)

因为你已经宣布列你需要的所有字符插槽一个CHAR()。你的模式中有9个字符。我不确定“空值”是什么意思,但所有空格或NULL似乎都合理。由于CHAR()值具有固定长度,因此将用空格填充空字符串('')至全长。

+0

不应该是'OR trim(col)='''? –

+0

ohhh你的权利..因为破折号的字符(9)。我用数字作为CHAR,以便我可以应用约束来获得像这样的格式(xx-xxxxxx),我的意思是空值是这样的('')或空字符串,因为他们称之为 – Sam

+0

谢谢它的工作原理 – Sam