给定两个字符串,我们可以这样做:
select 'aaa123' ilike 'aaa'||'%'
结果将为 TRUE。我想对一个字符串和一个数组做同样的事情——如果给定的字符串以字符串数组的任何元素开头,那么结果将显示 TRUE。
例如(数组和字符串):
select array['aaa123'::text,'bbb123'::text] as text_array
select 'aaa12345' as string
我想做这样的事情:
select string ilike ANY(text_array || '%')
我期望 TRUE,因为 aaa12345 以 aaa123(数组元素)开头。
非常感谢您的帮助!
最佳答案
您可以unnest()
字符串数组,然后将您的输入字符串与您想要的每个元素进行比较。
输出中的行数与数组中的元素数一样多。由于您需要一个明确的指示器,是否对数组元素的任何比较都会产生真正的使用 bool_or()
聚合函数:
select
bool_or('string12345' ilike arr_element||'%')
from
unnest(ARRAY['string123','something']::text[]) x(arr_element);
这会给你 TRUE
因为:
SELECT 'string12345' ilike 'string123%' -- true
备注:bool_or()
如果至少一个输入值为真,则返回真,否则返回假。
关于arrays - Postgresql - 检查给定字符串是否以字符串数组的任何元素开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39019715/