如何将 PostgreSQL CITEXT 变量格式化为用于搜索的正则表达式
How to format in PostgreSQL CITEXT variable to a regex to be used for search
首先 - 所有学分都归于 Laurenz Albe 回答 here
我有一个 JSONB 列,我需要在其中对值执行搜索(完全按照链接问题中的解释)。我想从那里的答案和三元组索引中获益。但是在答案中搜索的正则表达式直接硬编码 WHERE visitors::text *~ '\mJohn Doe\M';
我的值来自用户输入搜索字符串的前端,该搜索字符串在 postgres 函数中命名为 search_term
。
如果我要直接使用答案,我将不得不执行 WHERE visitors::text search_term
,这显然是行不通的。
我的问题是如何继续查询,以便我可以修改 search_term
变量并获得与原始 post 中的 *~ '\mJohn Doe\M'
相同的效果?
只需将变量作为右操作数传递给正则表达式运算符*~
;
WHERE visitors::text *~ '\m' || search_term || '\M'
首先 - 所有学分都归于 Laurenz Albe 回答 here
我有一个 JSONB 列,我需要在其中对值执行搜索(完全按照链接问题中的解释)。我想从那里的答案和三元组索引中获益。但是在答案中搜索的正则表达式直接硬编码 WHERE visitors::text *~ '\mJohn Doe\M';
我的值来自用户输入搜索字符串的前端,该搜索字符串在 postgres 函数中命名为 search_term
。
如果我要直接使用答案,我将不得不执行 WHERE visitors::text search_term
,这显然是行不通的。
我的问题是如何继续查询,以便我可以修改 search_term
变量并获得与原始 post 中的 *~ '\mJohn Doe\M'
相同的效果?
只需将变量作为右操作数传递给正则表达式运算符*~
;
WHERE visitors::text *~ '\m' || search_term || '\M'