int2[]配列のタイプの列があります。そして、この列でINクエリを作成したいと思います。
グーグルで検索し、@>演算子で配列列を検索しましたが、int2型の配列列では機能しないようです。しかし、それはint[]で機能します
int2 []で機能しない理由を誰かが知っていますか?
ecabuk=# CREATE TABLE "Test"("Column1" int2[]);
CREATE TABLE
ecabuk=# INSERT INTO "Test" VALUES ('{10, 15, 20}');
INSERT 0 1
ecabuk=# INSERT INTO "Test" VALUES ('{10, 20, 30}');
INSERT 0 1
ecabuk=# EXPLAIN ANALYZE SELECT * FROM "Test" WHERE "Column1" @> ARRAY[20];
ERROR: operator does not exist: smallint[] @> integer[]
LINE 1: ...LAIN ANALYZE SELECT * FROM "Test" WHERE "Column1" @> ARRAY[2...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
ecabuk=# ALTER TABLE "Test" ALTER COLUMN "Column1" type int[];
ALTER TABLE
ecabuk=# EXPLAIN ANALYZE SELECT * FROM "Test" WHERE "Column1" @> ARRAY[20];
QUERY PLAN
--------------------------------------------------------------------------------------------------
Seq Scan on "Test" (cost=0.00..26.38 rows=7 width=32) (actual time=0.200..0.204 rows=2 loops=1)
Filter: ("Column1" @> '{20}'::integer[])
Total runtime: 0.256 ms
(3 rows)
ecabuk=#