簡體   English   中英

postgres && - 帶有通配符的數組重疊運算符

[英]postgres && - Array Overlap operator with wildcard

在 postgres

select array['some', 'word'] && array ['some','xxx']   -- return true
select array['some', 'word'] && array ['','word']   -- return true

我想知道如何將 % 通配符與 && 運算符結合使用。

select array['some%', 'word'] && array ['','some']  -- I was thinking this will return true but it doesn't.

我想檢查一個文本數組是否至少包含另一個文本數組的一個元素。 第一個文本數組可以包含通配符。 最好的方法是什么?

您可以嘗試unnest解析 arrays 的每個元素並使用LIKEILIKE比較它們:

SELECT EXISTS(
  SELECT  
  FROM unnest(array['some%', 'word']) i (txt),
       unnest(array ['','some']) j (txt)
  WHERE j.txt LIKE i.txt) AS overlaps;

 overlaps 
----------
 t
(1 row)

如果要將%應用於所有數組元素,只需將其直接放在LIKEILIKE運算符的WHERE子句中:

SELECT EXISTS(
  SELECT  
  FROM unnest(array['some', 'word']) i (txt),
       unnest(array ['','XXsomeXX']) j (txt)
  WHERE j.txt LIKE '%'||i.txt||'%') AS overlaps;

 overlaps 
----------
 t
(1 row)

演示: db<>fiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM