时间:2017-07-19 11:45:10

标签: sql postgresql

我有一个简单的表格,列x和y。 这些列包含用于匹配的类似SQL的模式。 列x是varchar的数组(VARCHAR []) 列y是简单的字符串(VARCHAR)

例如:

第一行:

x                         y
{'asd','sdf%','%er%'}     %er%

我有这个问题:

SELECT x, 'ters' LIKE ANY("x"), y, 'ters' LIKE "y" FROM s 

所以这个查询的结果是:

"{'asd','sdf%','%er%'}";f;"%er%";t

我的麻烦是:

为什么LIKE运算符适用于Y而不适用于X.

如何按VARCHAR[]匹配?

1 个答案:

答案 0 :(得分:1)

您的数组输入格式错误:

select x, 'ters' like any (x), x[3]
from (values
    ('{asd,sdf%,%er%}'::varchar[]),
    ($${'asd','sdf%','%er%'}$$)
) s(x);
           x           | ?column? |   x    
-----------------------+----------+--------
 {asd,sdf%,%er%}       | t        | %er%
 {'asd','sdf%','%er%'} | f        | '%er%'

https://www.postgresql.org/docs/current/static/arrays.html#ARRAYS-INPUT