sql - 带有正则表达式的 Postgresql 中的条件检查约束

标签 sql database postgresql

我正在尝试在 postgresql 中创建条件检查约束。当 a_type 为 'a' 时,我希望 b 仅包含数字。当 a_type 不是 'a' 时,我希望 b 包含任何字符。我将如何做到这一点?我现在有这个:

编辑: 我认为这应该有效。

CONSTRAINT test CHECK (a_type <> 'a' AND b ~* '^.$') OR (a_type = 'a' AND b ~* '^[0-9]+$')

最佳答案

a_type <> 'a' 时,您不必使用正则表达式:

check (a_type <> 'a' or a_type = 'a' and b ~* '^[0-9]+$') 

关于sql - 带有正则表达式的 Postgresql 中的条件检查约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47603242/

相关文章:

sql - 什么时候或为什么要使用右外连接而不是左连接?

sql - 当主键在 sql 中已知时,如何对特定单元格进行外键引用?

mysql - 如何从一个月前的数据库中获取值而忽略当前日期的某些天数?

Java - 如何将数据从 mysql 数据库转换为 JSON 数组?

mysql - SQL 查询 (MAX-MIN) 显示错误结果

database - 流复制和逻辑复制的区别

php postgresql 连接

arrays - 将 JSONB_ARRAY_ELEMENTS 结果分配给 VARCHAR 数组

java - Android:替换游标/sql 查询的值

mysql - 将 mysql 脚本转换为 postgresql 脚本