无法在 Postgres (9.3) 索引中使用 concat 函数

2024-07-01

我正在几个文本列上创建索引(在 Postgres 9.3 中),我想使用concat, e.g:

CREATE INDEX 
ON my_table
USING gin (to_tsvector('english', concat(title, ' ', description)))

但是,当我尝试执行此操作时,出现以下错误:

ERROR: functions in index expression must be marked IMMUTABLE

香草串联||操作员工作正常。但是,我更喜欢使用concat since description可能NULL,以及||运算符似乎将任何连接与NULL into NULL.

如果我理解正确的话,这意味着concat没有标记为不可变,我不明白。

当然,我只能coalesce所有可为空的列,但感觉不优雅。最重要的是,我很好奇为什么我不能使用concat在我的索引中?


原因CONCAT is not IMMUTABLE汤姆·莱恩 (Tom Lane) 在这个帖子 http://www.postgresql.org/message-id/3361.1410026366@sss.pgh.pa.us:

concat() 调用数据类型输出函数,这些函数不一定是 不可变的。一个简单的例子是 timestamptz_out 的结果取决于 关于时区设置。

IE。这是因为它接受非文本输入,当转换为文本时,非文本输入可能会根据会话设置而改变。

您可能必须为此推出自己的函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 Postgres (9.3) 索引中使用 concat 函数 的相关文章

  • 如何优化查询以计算行相关的日期时间关系?

    假设我有一个简化的模型 其中patient可以有零个或多个events 一个事件有一个category and a date 我想支持以下问题 Find all patients that were given a medication a
  • SQL Server 链接服务器性能

    我正在使用 SQL Server 2008 Enterprise 我正在使用链接服务器技术从另一台服务器链接另一个 SQL Server 2008 Enterprise 实例 我编写 TSQL 来操作两个服务器实例中的对象 例如表 我的问题
  • 每笔交易后余额计算

    我有这样的表 cust id acc no trans id trans type amount 1111 1001 10 credit 2000 0 1111 1001 11 credit 1000 0 1111 1001 12 debi
  • 使用串联和 LIKE 的查询性能

    有人可以解释这 3 个查询之间的性能差异吗 concat 功能 explain analyze select from person where concat last name first name middle name like Se
  • “无法在查询内执行DML操作”的解决方案?

    我正在使用数据分析工具 我的要求是接受用户的值 将其作为参数传递并将其存储在表中 非常简单 所以我坐下来写这篇文章 create or replace procedure complex datainput in VARCHAR2 is b
  • SQL Server - INSERT 后返回值

    我试图在 INSERT 语句后获取键值 例子 我有一个包含属性名称和 ID 的表 id 是生成的值 INSERT INTO table name VALUES bob 现在我想在同一步骤中取回 id 这是怎么做到的 我们使用的是 Micro
  • Zend DB Select 具有多个表联接

    尝试使用复制以下查询Zend Db Select 有什么指点吗 SELECT compounds id as compounds id reactions id as reactions id reaction compound numbe
  • 错误:索引表达式中的函数必须在 Postgres 中标记为 IMMUTABLE

    我想创建多列表达式索引 但是当我创建索引时 输出以下消息 detail message wapgrowth gt create index CONCURRENTLY idx test on tmp table using btree sky
  • 无法在 Postgres (9.3) 索引中使用 concat 函数

    我正在几个文本列上创建索引 在 Postgres 9 3 中 我想使用concat e g CREATE INDEX ON my table USING gin to tsvector english concat title descri
  • 跨三个表的 LEFT JOIN(带有连接表)

    在Postgres中 有没有办法执行left join在由联结表链接的表之间 并在链接表上进行一些过滤 比如说 我有两张桌子 humans and pets 我想执行一个查询 其中包含人类 ID 和宠物名称 如果人类 ID 存在 但他们没有
  • swaplevel() 和 reorder_levels() 有什么区别?

    在使用 pandas 的分层索引级别时 有什么区别swaplevel https pandas pydata org pandas docs stable generated pandas DataFrame swaplevel html
  • Spark SQL中如何按时间间隔分组

    我的数据集如下所示 KEY Event Type metric Time 001 event1 10 2016 05 01 10 50 51 002 event2 100 2016 05 01 10 50 53 001 event3 20
  • 所有排序规则下包含相同长度整数的字符串的数字排序顺序

    是否可以安全地假设 SQL Server 中的所有排序规则都会对包含相同长度整数的字符串给出 预期 即数字 排序顺序 例如 假设 text仅包含非负整数 0 9 以下代码片段是否可以确保该值不会溢出int范围 或者可能有一些排序规则 tex
  • 如何获取与 PostgreSQL 中的视图或表关联的触发器

    我有一个要求 即我必须获取与给定表 视图关联的触发器列表 谁能帮我找到 PostgreSQL 中表的触发器 这将返回您想知道的所有详细信息 select from information schema triggers 或者如果您想对特定表
  • 复制行并更改一小部分列?

    首先 我先说一下我知道类似问题的 INSERT SELECT 解决方案 请参阅here https stackoverflow com questions 2783150 mysql how to copy rows but change
  • 将.IBD文件导入MySQL服务器

    我正在尝试找到一种方法将 旧复制的 ibd 文件导入到新安装的 MYSQL Server 8 0 中 您需要了解exact表的结构 CREATE TABLE陈述 创建具有相同结构的表 Run ALTER TABLE table name D
  • 如何在 Oracle SQL 中选择相关的一组项目

    我有一些表格的数据 Key ID Link 1 MASTER 123 2 AA 123 3 AA 123 4 BB 123 5 MASTER 456 6 CC 456 我希望能够在同一选择中选择所有符合选择标准的链接项目以及链接的主项目 例
  • 如何获取 Postgresql 过程警告消息?

    运行存储过程时 该过程可能会引发警告消息 有没有办法使用 Postgresql 驱动程序获取这些消息 https github com lib pq https github com lib pq 在戈兰 For lib pq司机的回答是
  • 在单个查询中进行 SQL 更新和选择

    SQL MySQL 中有没有一种方法可以增加一个值 并在单个查询中返回该值 我试图避免执行如下两个查询 QUERY 1 UPDATE my table SET my col my col 1 WHERE something somethin
  • Pandas:获取重复索引

    给定一个数据帧 我想获取重复的索引 这些索引在列中没有重复的值 并查看哪些值不同 具体来说 我有这个数据框 import pandas as pd wget https www dropbox com s vmimze2g4lt4ud3 a

随机推荐

  • 如何在嵌入 UIViewController 的 UITableView 中直观地创建和使用静态单元格

    我正在使用 XCode 4 2 并使用故事板构建了我的 UI 我需要创建一个在 UITableView 上方和下方有内容的视图 我可以通过使用 UIViewController 来实现这一点 UITableViewController 不允
  • 如何在远程 shell 上接收 stdio 和 error_logger 消息

    在花了很长时间让 rb 在远程 shell 上工作后 我想在远程 shell 上获取 stdio 错误记录器消息 我已经研究了更改 group leader 但似乎需要更改所有正在运行的进程的 group leader 我的实验发现它非常不
  • VB.NET GetElementById 内部文本

    好的 这是我的 html 行及其 ID
  • 如果子查询包含 NULL,带有“IN”子查询的 SQL select 不会返回任何记录

    我遇到了这个有趣的行为 我认为左连接是可行的方法 但仍然希望解决这个问题 这是错误还是设计行为 有什么解释吗 当我从左表中选择记录时 右表的子查询结果中不存在值 如果子查询结果有空值 则不会返回预期的 缺失 记录 我希望编写此查询的两种方法
  • D3.js -- 序数尺度(版本 3 到版本 4)

    我正在学习 Udemy 的 D3 js 课程 不幸的是 由于新版本 D3 js 的发布 没有任何关于其新语法的最新教程 因此我浏览了他们的 API 的 wiki 话虽如此 我一直困惑于如何翻译这段代码 版本 3 我在学习序数尺度 var d
  • 为什么在 VB6 中将 True 强制转换为整数的结果是 -1?

    在 VB6 中 强制True转换为整数会得到值 1 为什么会这样呢 这背后的原因是什么 在大多数其他编程语言 C C Java Perl Python 等 中 true 在强制转换为整数时变为 1 在布尔代数中 值 1 用于表示 true
  • 在条件 for 循环中渲染 React

    我在网页中有静态信息 class MyStaticWebPage extends React Component render return
  • PostGIS 插入 WKT 后会自动转换吗?

    我对 PostGIS 还很陌生 所以请耐心等待 假设我有一个表定义如下 CREATE TABLE gtest name varchar geom geometry 首先 插入 我正在做类似的事情 INSERT INTO gtest VALU
  • 如何在android项目中使用Roboto字体[重复]

    这个问题在这里已经有答案了 我开发了一个android项目 在此项目中 文本字体默认为 android sans 现在我想将整个项目的默认文本字体替换为 roboto 字体 我怎样才能做到这一点 您可以从这里下载 Roboto 字体 htt
  • 将数组项合并到字符串中[重复]

    这个问题在这里已经有答案了 如何将所有数组项合并为一个字符串 Use the implode功能 http php net manual en function implode php 例如 fruits array apples pear
  • linux键盘驱动源码

    我一直致力于为 Linux 制作自己的键盘驱动程序 所以我发现了这两个链接 usbkbd c http lxr free electrons com source drivers hid usbhid usbkbd c and atkbd
  • 有没有办法在 Shiny 中预先缓存输出?

    我有下面的闪亮应用程序 我第一次选择任何给定数字时需要 3 秒才能加载结果 由于bindCache 如果我稍后选择相同的数字 我会立即得到结果 但是 我不想手动选择所有 10 个数字 只是为了让我的应用程序在呈现之前做出响应 有什么办法可以
  • 如何将 DataTable 数据传递到 Bootstrap 模式

    我有一个带有此变量的 jQuery 数据表 columns data id data date data type data name data user name data status data closing date data
  • 无法更改 SSIS Excel 目标列数据类型

    我有一个 SSIS 包 它从 SQL Server 导入数据并将其放入 Excel 目标文件中 当进入 ADO 源组件的高级编辑器时 我有一个字段Description其外部数据类型为Unicode String 长度 4000 输出数据类
  • 使用PHP检测哪个htaccess用户登录?

    我正在构建一个上传功能 以便我认识的人可以安全 轻松地向我发送文件 但我想这样设计 当我的一个朋友用their登录 这将是 htaccess登录 我可以在 PHP 中建立该文件并将其文件记录到与其帐户关联的数据库中 简而言之 我需要 PHP
  • 如何查询 sqlite 的某些行,即将其分为页面(perl DBI)

    抱歉我的菜鸟问题 我目前正在编写一个 Perl Web 应用程序 其背后有 sqlite 数据库 我希望能够在我的应用程序查询结果中显示可能会获得数千行的内容 这些应该分成页面 路由应该像 webapp N 其中 N 是页码 使用 DBI
  • 使用 JSONPath 从 JSON 中排除字段

    我从 REST 服务调用获取 JSON 响应 并且只想从响应中选择部分字段 我正在使用 JSONPath 来过滤字段 下面是 JSON 示例 store book category reference author Nigel Rees t
  • 使用 Spring 依赖注入时,Hibernate SessionFactory 始终为 null

    我得到了NullpointerException在我的保存方法中CityDaoImpl 看来sessionFactory没有自动装配 因为在调试时发现 sessionFactory 从未被注入CityDaoImpl 我浏览了很多答案 但没有
  • 将项目分解为小任务[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道 当一个新项目到来时 比如建立一个社交网站 我该如何将项目分解为小任务 每个项目通常有 2 4 名程序员 但通常没有测试人员 我是否应该
  • 无法在 Postgres (9.3) 索引中使用 concat 函数

    我正在几个文本列上创建索引 在 Postgres 9 3 中 我想使用concat e g CREATE INDEX ON my table USING gin to tsvector english concat title descri