作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 text[]
列中使用 IN
运算符。但我收到此错误消息:
错误:运算符不存在:text = text[] 提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换
。
是否可以在这种情况下使用 IN 运算符?如果不是,我应该使用什么?
我已经尝试转换为 json/jsonb,使用 ANY
或 @> 运算符但没有成功
可重现的例子:
CREATE TABLE visitor (name varchar(255), hobbies text[]);
CREATE TABLE hobbies(name varchar(255), id text);
INSERT INTO visitor (name, hobbies) VALUES ('sanghin', '{ida}');
INSERT INTO hobbies (name, id) VALUES ('sql', 'ida');
SELECT name FROM hobbies WHERE id IN (SELECT hobbies FROM visitor WHERE visitor.name = 'sanghin');
最佳答案
SELECT name
FROM hobbies
WHERE id IN
(SELECT unnest(hobbies) FROM visitor WHERE visitor.name = 'sanghin');
您的子查询返回一组数组。然后你试图将文本与集合的元素进行比较。因此,您正在尝试将类型 text
与类型 text[]
进行比较,但这是行不通的。取消嵌套数组将为您提供一组文本值。比较有效。
关于postgresql - 如何在 text[] 列数据类型上使用 in operator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58391097/
我是一名优秀的程序员,十分优秀!