我正在使用Oracle 11g,並嘗試創建一個表來定義創建約束。Oracle 11g - 使用正則表達式檢查約束
我嘗試添加檢查約束來驗證一些信息(如電子郵件地址,電話號碼等)
有什麼在Oracle 11g中,將允許我做這樣的事情?
constraint CK_CONSTRAINT_NAME check (EMAIL like 'REGEX')
我想用正則表達式(從regexLib搶下)是:
^[a-zA-Z][a-zA-Z0-9_\.\-][email protected]([a-zA-Z0-9-]{2,}\.)+([a-zA-Z]{2,4}|[a-zA-Z]{2}\.[a-zA-Z]{2})$
我想的Oracle 11g(糾正我,如果我錯了)不支持這種格式的正則表達式..
我見過使用REGEX_LIKE的方法,但它似乎只適用於WHERE
子句。
我想保留它作爲檢查約束,而不是觸發器或外部函數/腳本。
此外,我已閱讀過其他主題,有人說RegEx'不是驗證電子郵件地址格式和此類信息的好方法。評論中沒有任何理由,我想知道爲什麼,如果有理由!
這正則表達式應該被取出並射擊。我希望它在RegexLib上不是那樣的。 「'alum'」?無用的量詞?缺少標點符號?除此之外,正則表達式不適用於驗證電子郵件地址,因爲格式對於可靠的正則表達式來說過於可變(您總是會錯過有效的郵件並接受無效的郵件)。您可以做的最好的方法是檢查是否存在「@」符號,並嘗試向其發送確認電子郵件。如果成功,並且如果您收到回覆郵件,則知道該地址有效且處於活動狀態。 –
@TimPietzcker對不起,我改變了實際的regEx,這是對原始版本的混搭,我從Oracle文檔中嘗試過。 – Pacane