Sql ILIKE和子查询问题

Sql ILIKE和子查询问题,sql,database,vb.net,postgresql,Sql,Database,Vb.net,Postgresql,我在pgSQL中的ilike操作中苦苦挣扎 select * from gtab47 where areaname ilike '(select place from gcompany where companyid=3)%' 如何纠正它?这里有几件事不对 子查询不带引号,您必须使用| |来连接字符串,因此您可能需要编写如下内容: select * from gtab47 where areaname ilike (select place || '%' from gcompany whe

我在pgSQL中的ilike操作中苦苦挣扎

select * from gtab47 where areaname ilike '(select place from gcompany where companyid=3)%'

如何纠正它?

这里有几件事不对

子查询不带引号,您必须使用| |来连接字符串,因此您可能需要编写如下内容:

select * 
from gtab47 
where areaname ilike (select place || '%' from gcompany where companyid=3)
请注意,除非companyid是唯一的或主键,否则此查询是不正确的,因为表达式中使用的子查询最多只能返回一行


如果它不是唯一的或主键,则需要重新表述查询以使用联接,或者像任何查询一样使用带有数组的子查询。\u agg。

始终显示您的PostgreSQL版本和任何错误消息的确切文本。完成后,请在此处编辑您的问题和评论。请澄清此基本问题。@ErwinBrandstetter我已经收到ans,无论如何,谢谢您的回复comment@superman:很好,你有答案了。但这是一个公共论坛,如果你的问题对其他人没有用处,请删除它。或者改进它。@ErwinBrandstetter下次我会遵守你的话:我找到了解决方案,从gtab47中选择*,其中areaname类似于| |从gcompany中选择地点,其中companyid=3%,“从gcompany中选择地点,其中companyid=3%,”这不会返回任何内容,需要在两端加上“| |”,即| |从gcompany中选择place,其中companyid=3 | |“%”,并且它起了作用,无论如何,感谢注释。需要连接到空字符串的唯一原因是如果place的数据类型不是文本。也许您需要place::text | |'%'?这就是为什么您总是在问题中显示错误消息和表定义。