2012-05-15 47 views
1

中的字符格式可能是一個明顯的問題,但Oracle Technet對我的搜索條件不友好。我想創建一個表,並有一個字符列有一個特定的格式。例如,檢查約束可以確保插入的SSN字符串的格式爲「### - ## - ####」,包括破折號。我如何指定此檢查?檢查Oracle

回答

1

一般不將數據存儲在一個特定的格式,一個非常好的主意。格式化僅僅是花裏胡哨的,不同的情況可能需要不同的格式。添加本地化,​​這變得更加明顯,這不是一個好主意。

您希望在檢索數據後進行格式化。這可以通過Format Models完成。

+0

除了最佳做法,數據的格式將始終如一。雖然我想我可以在其他位置執行檢查,而不是在插入位置,但我認爲讓表格只接受該格式會很好,因爲它將成爲一個靜態字符串。 – Marty

2

我從來沒有做過類似的東西,但嘗試這樣的事:

CREATE TABLE suppliers 
( supplier_id numeric(4), 
    supplier_name varchar2(50), 
    CONSTRAINT check_supplier_id 
     CHECK (supplier_id REGEXP_LIKE(testcol, '^... .. ....$');) 
); 
+0

可能有效,但我不會運行正則表達式,如果這是唯一的選擇。謝謝 – Marty

0

使用數據庫觸發器可以完成更復雜的驗證。也許你這是你錯過的搜索詞。