【发布时间】:2015-03-20 06:56:21
【问题描述】:
我当前的代码如下所示:
SELECT
1
FROM pg_namespace sch
JOIN pg_class tab ON tab.relnamespace = sch.oid
JOIN pg_index idx ON idx.indrelid = tab.oid
JOIN pg_class icl ON icl.oid = idx.indexrelid
JOIN pg_attribute col ON col.attrelid = tab.oid
WHERE
sch.nspname = 'my_schema'
AND tab.relkind = 'r'
AND idx.indisprimary
AND icl.relname = 'pk_my_table'
AND col.attname = 'my_table_id'
AND idx.indkey = ARRAY[col.attnum] -- <-- The problematic comparison
;
这不起作用,因为:ERROR: operator does not exist: int2vector = smallint[]。
我尝试了以下各种组合:
- 将
indkey转换为idx.indkey::smallint[]之类的数组 - 将
ARRAY[col.attnum]转换为int2vector - 使用
ALL运算符 - 使用
@>运算符
如何检查indkey是否恰好包含一个恰好是col.attnum的条目?
【问题讨论】:
标签: sql arrays postgresql types comparison