pgsql 判断一个字段只能为中文、英文、数字、-、#、/、中英文括号
时间: 2023-07-10 07:08:31 浏览: 325
libpam-pgsql:项目移至github:https://github.com/pam-pgsql/pam-pgsql-开源
可以使用正则表达式来判断一个字段是否符合指定的字符集合。在 PostgreSQL 中,可以使用正则表达式函数 `regexp_match` 来实现。
例如,假设需要判断一个字段 `name` 是否只包含中文、英文、数字、`-`、`#`、`/`、中英文括号,可以使用如下的正则表达式:
```
^[a-zA-Z0-9\-#\/()()]+$|^[\u4e00-\u9fa5()()]+$
```
其中:
- `^` 表示字符串的开始;
- `$` 表示字符串的结束;
- `|` 表示或者的关系;
- `[a-zA-Z0-9\-#\/()()]+` 表示包含至少一个英文、数字、`-`、`#`、`/`、中英文括号的字符串;
- `[\u4e00-\u9fa5()()]+` 表示包含至少一个中文、中英文括号的字符串。
因此,可以使用以下 SQL 语句来判断一个字段是否符合上述的字符集合:
```sql
SELECT name FROM table_name WHERE NOT regexp_match(name, '^[a-zA-Z0-9\-#\/()()]+$|^[\u4e00-\u9fa5()()]+$');
```
如果该语句返回了任何记录,则说明该字段不符合指定的字符集合。
阅读全文