sql - Postgresql 使用 like 选择数组重叠的位置
问题描述
是否可以使用该子句确定ARRAY
列是否包含来自另一个数组的重叠值?LIKE
运算符有效,&&
但字符串必须完全匹配
q = """select * from articles where keywords && '{"mortgage brokers"}';""" // Exact match
是否可以过滤行包含值而substring
不是完整字符串的关键字?就像是:
q = """select * from articles where keywords && LIKE '{"mortgage"}';""" // HOW TO FILTER keywords containing value with substring
解决方案
LIKE
对字符串进行操作。要检查两个数组是否重叠,您可以使用&&
.
&&
: 重叠(有共同的元素)
SELECT ARRAY[1,4,3] && ARRAY[2,1] arrays_overlap;
| arrays_overlap |
| -------------- |
| true |
要查看数组中是否存在LIKE
来自另一个数组的值,一种解决方案是取消嵌套两个数组并将结果与LIKE
:
SELECT EXISTS (
SELECT 1
FROM
unnest(ARRAY['abc', 'def' ]) my_array(x)
INNER JOIN unnest (ARRAY['a', 'z' ]) my_keywords(x)
ON my_array.x LIKE '%' || my_keywords.x || '%'
) arrays_have_similar_elements;
| arrays_have_similar_elements |
| ---------------------------- |
| true |
SELECT EXISTS (
SELECT 1
FROM
unnest(ARRAY['abc', 'def' ]) my_array(x)
INNER JOIN unnest (ARRAY['y', 'z' ]) my_keywords(x)
ON my_array.x LIKE '%' || my_keywords.x || '%'
) arrays_have_similar_elements;
| arrays_have_similar_elements |
| ---------------------------- |
| false |
推荐阅读
- docker - .NET Core 3.0 应用程序在 IIS Express 上运行,但不在 docker 上
- angular - 在测试中成对不触发时可观察到
- r - 为什么我的第二个 ggplot 没有出现在我闪亮的应用程序中?
- html - CSS - 如何在移动设备上点击时停止输入被突出显示
- sql - 为什么“OR”运算符比 oracle 中的 union 慢
- android - LiveData观察者改变而不是保持不变的问题
- r - 将空列添加到稍后要填充的数据
- linux - 使用 for 循环 grep 文件行
- c# - 在 blazor 中同步 CSS 动画
- java - 神经网络返回 NaN 作为输出