gpt4 book ai didi

postgresql - 如果任何列在 PostgreSQL 全文搜索中没有数据,则 to_tsvector 为空

转载 作者:行者123 更新时间:2023-11-29 12:43:43 26 4
gpt4 key购买 nike

我正在尝试实现 Postgre SQL 全文搜索,但我遇到了一个问题,如果使用 to_tsvector 设置的任何列为空,整个文档将返回空。

我有一个如下所示的表格:

id |   title   |   description   |
1 | skis | my skis |
2 | bike | |

我正在创建文档:

SELECT title, description,
setweight(to_tsvector(title), 'A'::"char") ||
setweight(to_tsvector(description), 'C'::"char")
AS document
FROM inventory

我期望看到的结果是:

title |  description  |  document  |
skis | my skis |'ski':1A,3C |
bike | | 'bike':1A |

但我实际得到的是:

title |  description  |  document  |
skis | my skis |'ski':1A,3C |
bike | | |

这似乎是一个错误。在描述中添加任何单个字母或数字或任何内容都可以使文档正确显示,但单个列中的空值会导致整个文档为空。为什么需要描述才能根据标题和描述进行搜索?我是不是误会了什么?

最佳答案

这似乎是 SQL 的标准行为。

作为解决方法,您可以在查询中使用函数 COALESCE:

SELECT title, description,
setweight(to_tsvector(title), 'A'::"char") ||
setweight(to_tsvector(coalesce(description, '')), 'C'::"char")
AS document
FROM inventory;

关于postgresql - 如果任何列在 PostgreSQL 全文搜索中没有数据,则 to_tsvector 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36393665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com