当前位置: 首页 > 知识库问答 >
问题:

在SQL中使用字符串和整数生成约束

姬心思
2023-03-14

我是初学者。我在PostgreSQL上创建了一个查询。我想用字符串和整数进行约束。它已成功运行,但当我插入数据时,它给了我一个错误

CREATE TABLE customer
(
    id_customer char(5) PRIMARY KEY NOT NULL,
    CONSTRAINT cek_id_customer CHECK ((left(id_customer,2) in ('CU')) 
                                      and  substring(id_customer,3) LIKE '%[0-9]%'), 
    nama_customer varchar(30) NOT NULL,
    gender_customer varchar(15) NOT NULL,
    CONSTRAINT  cek_gender_customer CHECK(gender_customer = 'Male' OR gender_customer = 'Female')
);

INSERT INTO customer 
VALUES ('CU001', 'Sayaa', 'Male')

信息

错误:关系“客户”的新行违反检查约束“cek_id_customer”详细信息:失败的行包含(CU001、Sayaa、男性)。SQL状态:23514

共有1个答案

陈哲
2023-03-14

要强制执行所需的匹配模式,可以在约束中使用正则表达式匹配规则,如id_customer~“^CU[0-9]*$”

例如:

CREATE TABLE customer (
  id_customer char(5) PRIMARY KEY NOT NULL,
  CONSTRAINT cek_id_customer CHECK (id_customer ~ '^CU[0-9]*$'),
  nama_customer varchar(30) NOT NULL,
  gender_customer varchar(15) NOT NULL,
  CONSTRAINT cek_gender_customer CHECK(
    gender_customer = 'Male' OR
    gender_customer = 'Female'
  )
);

INSERT INTO customer (id_customer, nama_customer, gender_customer)
VALUES ('CU001', 'Sayaa', 'Male'); -- succeeds

INSERT INTO customer (id_customer, nama_customer, gender_customer)
VALUES ('CU1X', 'Sayaa', 'Male'); -- fails!

请参阅DB Fiddle上的运行示例。

 类似资料:
  • 问题内容: 当尝试取一个整数并将其前缀为“ b”并将其转换为字符串时,出现此错误: 与此功能有关: 问题答案: name = ‘b’ + str(num) 要么 如S.Lott所述,Python 3及更高版本不建议使用混合运算符’%’。我从INTERCAL那里窃取了“混合”这个名称,但这就是我谈论它的方式,并希望至少在印刷品上看到它一次(就像渡渡鸟一样),它从地球表面消失了。

  • 问题内容: 我正在尝试使用bash函数RANDOM从包含整数和字母数字的变量中创建一个由8个字符组成的随机字符串(例如:var =“ abcd1234ABCD”) 谢谢。 问题答案: 使用参数扩展。是可能的字符数,是模运算符。选择position处的字符,即本例中的0-length($ chars)个字符。

  • 问题内容: 目标是用数字表示的char值替换SQL查询中返回的整数值。例如: 标记为“端口”的表属性定义为1-4之间的整数。1 =篮球,2 =曲棍球,等等。下面是数据库表,然后是所需的输出。 数据库表: 所需的输出: 将这些整数值转换为String值的最佳实践是什么?在传递给程序之前使用SQL转换值?使用脚本语言来更改程序中的值?更改数据库设计? 问题答案: 数据库应该保存这些值,并且您应该执行连

  • 问题内容: 我想要一个5个字符串,该字符串由从集合中随机选择的字符组成。 用JavaScript做到这一点的最佳方法是什么? 问题答案: 我认为这将为您工作:

  • 问题内容: 如何在Swift中生成随机的字母数字字符串? 问题答案: Swift 4.2更新 Swift 4.2在处理随机值和元素方面引入了重大改进。您可以在此处阅读有关这些改进的更多信息。这是减少到几行的方法: Swift 3.0更新 原始答案:

  • 问题内容: 我正在努力用Java生成JSON字符串。 实际输出: 预期输出: 问题答案: 写 代替