Hi

ne 13. 12. 2020 v 18:42 odesílatel Zhihong Yu <z...@yugabyte.com> napsal:

> Hi,
> I was experimenting with the following query.
>
> create table sint1(k int primary key, arr smallint[]);
> create index s1 on sint1(arr);
> insert into sint1 select s, array[s*s, s] FROM generate_series(1, 10) AS s;
> select * from sint1 where arr @> array[4];
> ERROR:  operator does not exist: smallint[] @> integer[]
> LINE 1: select * from sint1 where arr @> array[4];
>                                       ^
> HINT:  No operator matches the given name and argument types. You might
> need to add explicit type casts.
> -------
>
> I wonder if someone can enlighten me on the correct way to perform the
> type cast.
>


postgres=# select * from sint1 where arr @> array[4::smallint];
┌───┬────────┐
│ k │  arr   │
╞═══╪════════╡
│ 2 │ {4,2}  │
│ 4 │ {16,4} │
└───┴────────┘
(2 rows)

postgres=# select * from sint1 where arr @> array[4]::smallint[];
┌───┬────────┐
│ k │  arr   │
╞═══╪════════╡
│ 2 │ {4,2}  │
│ 4 │ {16,4} │
└───┴────────┘
(2 rows)

postgres=#


>
> Thanks
>

Reply via email to