在 PostgreSQL 列中搜索子字符串

Posted

技术标签:

【中文标题】在 PostgreSQL 列中搜索子字符串【英文标题】:Search PostgreSQL column for substring 【发布时间】:2019-09-11 16:15:49 【问题描述】:

我有一个数据库列,其中包含这样的条目:

“56/45/34” “78/34/145” “45” ""(即 NULL)

我想搜索与某个数字匹配的行 - 例如,“45”应该返回第一行和第三行,而不是第二行。

【问题讨论】:

【参考方案1】:

我们可以在这里尝试使用带有单词边界的正则表达式方法:

select col
from your_table
where col ~* '\y45\y';

Demo

【讨论】:

【参考方案2】:

您可以将分隔的字符串转换为数组,然后对数组进行测试

select *
from the_table
where '45' = any(string_to_array(the_column, '/'))

【讨论】:

以上是关于在 PostgreSQL 列中搜索子字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在数组键中搜索子字符串?

使用 objectify 在实体中搜索子字符串

无法从 Ansible 变量中搜索子字符串

在字符串数组中搜索子字符串的最有效方法

在列表中的元素中搜索子字符串并删除该元素

哪种 C# 数据结构允许最有效地在一对字符串中搜索子字符串?