1
我正在寫一篇PostGres check
,以便將文本字段限制爲4個不同的值之一。我正在避免使用Enum
類型,因爲它已知會導致問題。正則表達式IsOne vs包含
我似乎有更多的「包含」,而不是必須是其中之一。
ALTER TABLE registrations
ADD CONSTRAINT proper_confirmation_status CHECK (confirmation_status::
text ~* '^(Unconfirmed|Confirmed|Rejected|NotApplicable)'::text);
所以:
- 字應該是那些4沒有任何附加的字符(開始或結束)中的一個。
- 支票應區分大小寫
- 目前
confirmdddddd
正確驗證,但confirmedSSSS
如果整場應等於你的'|' - 分隔值,使用'^'和'$':' '^(未證實|確認|拒絕| NotApplicable的)$'' –
@WiktorStribiżew我嘗試了你的建議,但失敗了(見上面的#3)。我只是意識到postgres運算符'〜*'可能是它匹配/包含與equals的關係。在問題中添加postgres標籤。 –
'$'必須處理第3點OK。 –