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。 –