arrays - Postgresql - 检查给定字符串是否以字符串数组的任何元素开头

标签 arrays postgresql

给定两个字符串,我们可以这样做:

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/

相关文章:

javascript - 新插入的值将替换数组中的所有值

javascript - 使用 Lodash 将最后一个树节点合并到数组中

c# - PostgreSQl,如何在 C# 中建立 OdbcConnection

sql - 如何在 PostgreSQL 中测试 if 语句?

mysql - 重写 SQL 查询以在 heroku 上工作

javascript - 使用 postgres 作为 Db 执行 app.get 时 Node.js 出现 404 错误

C: malloc 和 free 的堆栈实现

java - Java 将子数组复制到已初始化数组的方法

javascript - 合并复杂的多维数组

postgresql - 将 varchar 列转换为 UUID 时输入无效