如何解决PostgreSQL-正则表达式约束,因此varchar仅包含数字
我的Postgresql表中有一列用于输入VARCHAR
类型的电话号码。我选择此数据类型是因为在我的国家/地区,电话号码以0开头。
我需要引入约束条件,以检查电话号码是否仅包含个数字。
这是我到目前为止所拥有的:
ALTER TABLE contactInfo ADD CONSTRAINT checkPhone
CHECK(phone NOT SIMILAR TO '%[a-z]%' AND phone SIMILAR TO '%[0-9]%');
这似乎可行,但恐怕它不能过滤掉特定于不同语言的字符(例如ûûàà等)。
我该怎么办?
解决方法
您可以更具体地指定只希望数字:
CHECK(phone ~ '^[0-9]*$')
那更短:
CHECK(phone ~ '^\d*$')
如果您不想允许使用空字符串,请用*
(至少一个)替换数量符+
(0或更多)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。