微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL-正则表达式约束,因此varchar仅包含数字

如何解决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 举报,一经查实,本站将立刻删除。