首页 > 解决方案 > 如何在 PostgreSQL CITEXT 变量中格式化为用于搜索的正则表达式

问题描述

首先 - 所有学分都归于 Laurenz Albe在这里回答

我有一个 JSONB 列,我需要在其中对值执行搜索(正如链接问题中所解释的那样)。我认为可以从那里的答案和三元索引中获得优势。但是在答案中,搜索的正则表达式是直接硬编码的WHERE visitors::text *~ '\mJohn Doe\M';

我的值来自前端,用户输入一个搜索字符串,该字符串在 postgres 函数中命名为search_term.

如果我要直接使用答案,我将不得不执行WHERE visitors::text search_term这显然行不通。

我的问题是如何继续查询,以便我可以修改变量并获得与原始帖子中search_term相同的效果?*~ '\mJohn Doe\M'

标签: sqlregexstringpostgresqlwhere-clause

解决方案


只需将变量作为正确的操作数传递给 regexp operator *~

WHERE visitors::text *~ '\m' || search_term || '\M'

推荐阅读