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

Postgres不区分大小写的排除约束

方斌
2023-03-14

我试图创建一个排除约束,防止有效时间戳范围重叠,但只比较具有相同文本值的记录的范围。我希望文本值比较不区分大小写。我可以将=运算符与文本字段一起使用,但不能与citext字段一起使用,~*运算符是不可交换的。

这是PostgreSQL 9.5,在数据库上创建了citextbtree_gist扩展。

CREATE TABLE customer_product_categories (
  id serial PRIMARY KEY, 
  name text NOT NULL, 
  effective tstzrange DEFAULT '[-infinity,infinity]', 
  EXCLUDE USING gist (name WITH ~~*, effective WITH &&)
)
ERROR: operator ~~*(text,text) is not commutative
CREATE TABLE customer_product_categories (
  id serial PRIMARY KEY, 
  name citext NOT NULL, 
  effective tstzrange DEFAULT '[-infinity,infinity]', 
  EXCLUDE USING gist (name WITH =, effective WITH &&)
)
ERROR: operator =(citext,citext) is not a member of operator family "gist_text_ops"
  • i类如何不可交换
  • 有没有办法做我想做的事,还是我在做傻事

共有1个答案

空佐
2023-03-14

啊哈!我想出来了。我不得不走老派:

CREATE TABLE "customer_product_categories" (
  "id" serial PRIMARY KEY, 
  "name" text NOT NULL, 
  "effective" tstzrange DEFAULT '[-infinity,infinity]', 
  EXCLUDE USING gist (LOWER("name") WITH =, "effective" WITH &&)
)
 类似资料:
  • 问题内容: 如何区分大小写不区分给定字段的MongoDB集合?默认情况下,我在az之前获得AZ。 问题答案: 更新: 截至目前,mongodb具有不区分大小写的索引: 贝壳: 更新: 此答案已过期,3.4将具有不区分大小写的索引。请查看JIRA以获取更多信息https://jira.mongodb.org/browse/SERVER-90 不幸的是,MongoDB尚无区分大小写的索引:https

  • 问题内容: 我正在尝试提出一个要求区分大小写的结果的请求。 例如在我的数据库中 该请求是 但我有3行作为结果,我只想要abcdef 我试图找到一个解决方案 但是我有这个错误: 未知归类:’Latin1_General_CS_AS’{“成功”:false,“错误”:“#1273-未知归类:’Latin1_General_CS_AS’”} 谢谢 问题答案: 感谢您的帮助,我找到了不是latin1 ut

  • 问题内容: 我有一个Lucene索引,该索引当前区分大小写。我想添加的 选项 有不区分大小写作为后备的。这意味着与案例匹配的结果将获得更大的权重,并且将首先出现。例如,如果结果数限制为10,并且有10个匹配项符合我的情况,那就足够了。如果仅找到7个结果,则可以从不区分大小写的搜索中再添加3个结果。 我的案子实际上更复杂,因为我有不同重量的物品。理想情况下,匹配“错误”的表壳会增加一些重量。不用说,

  • 对于报告(0.1%的所有查询),我需要返回一个所有可能类别的列表,区分大小写! 考虑以下文件: 运行以下查询: 返回: 是否有方法返回区分大小写的类别(存储在文档中)?我对此查询结果中的感兴趣。 Elasticsearch论坛中的问题 谢谢,伊泰

  • 问题内容: 我想按不区分名称的名称搜索用户表中的数据。 我收到一个错误: 意外令牌:% 。我应该在哪里放置“%”? 问题答案: 您可以使用concat运算符: 或使用命名参数: (使用Spring Boot 1.4.3测试)