ROB*_*ail 0 regex sql string postgresql check-constraints
我的 PostgreSQL 表中有一个列用于类型为 的电话号码VARCHAR。我选择此数据类型是因为在我的国家/地区电话号码以 0 开头。
我需要引入一个约束来检查电话号码是否仅包含数字。
\n这是我到目前为止所拥有的:
\nALTER TABLE contactInfo ADD CONSTRAINT checkPhone\nCHECK(phone NOT SIMILAR TO '%[a-z]%' AND phone SIMILAR TO '%[0-9]%');\nRun Code Online (Sandbox Code Playgroud)\n它似乎有效,但恐怕它不会过滤掉特定于不同语言的字符(例如 \xc3\xb9 \xc3\xbb \xc3\xbc \xc3\xa2 \xc3\xa0 等)。
\n我该怎么做 ?
\n您可以更具体地说您只需要数字:
CHECK(phone ~ '^[0-9]*$')
Run Code Online (Sandbox Code Playgroud)
那就更短了:
CHECK(phone ~ '^\d*$')
Run Code Online (Sandbox Code Playgroud)
如果您不想允许空字符串,请将量词*(0 或更多)替换为+(至少 1)。
| 归档时间: |
|
| 查看次数: |
2899 次 |
| 最近记录: |