2017-02-22 74 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