【发布时间】:2016-01-28 04:17:48
【问题描述】:
我在比较 Postgres 类型时遇到问题,希望能得到一些帮助。我正在从包含 tilda 分隔字符串的配置表中提取有效文档类型,如下所示:
SELECT string_to_array(value,'|') as document_kinds
FROM company_configs
WHERE option = 'document_kinds'
这给了我一个值数组,所以
'doc1|doc2|doc3' 变成 {doc1,doc2,doc3}
接下来我需要为给定人员选择与我的文档类型匹配的文档:
SELECT * FROM people
JOIN documents ON ...
WHERE kind IN
(SELECT string_to_array(value,'|') as document_kinds
FROM company_configs
WHERE option = 'document_kinds')
documents.kind 列是“字符变化” 我的理解是 string_to_array 正在生成一个文本值数组 'text[]'
此查询产生错误“错误:运算符不存在:字符变化=文本[]”
如果我将 'kind' 转换为文本,使用
SELECT * FROM people
JOIN documents ON ...
WHERE kind::text IN
(SELECT string_to_array(value,'|') as visa_document_kinds FROM languages_united.company_configs WHERE option = 'visa_document_kinds')
我收到错误“错误:运算符不存在:text = text[]”
我不知道如何比较两者,如果有任何建议,我将不胜感激。
提前致谢 丹
Postgres 9.4.1
【问题讨论】:
标签: arrays postgresql comparison