最近工作需要 模糊查询数组中数据,
第一种方法是
SELECT
*
FROM
tab_tv_info T
WHERE
1 = 1
AND EXISTS (
SELECT DISTINCT
*
FROM
(
SELECT
tvid,
UNNEST (actor) actorname
FROM
tab_tv_info
) r
WHERE
r.tvid = T .tvid
AND (r.actorname LIKE '%张艺谋%' or r.actorname LIKE '%高仓健%' )
)
我感觉UNNEST () 是把数组转换成一维数组,尤其是有多个条件的情况下。这种方法是全表扫描,效率要慢
我又想到第二种方法
SELECT
*
FROM
tab_tv_info T
WHERE
1 = 1
AND array_to_string(alias, ',', '*') LIKE '%天天有喜2%'
这种方法是把数组转换成字符串,array_to_string() 方法, 然后用like 这样效率要高很多。