PostgreSQL查询,LIKE运算符

4
文档告诉我在SQL中使用LIKENOT LIKE来搜索包含/以某些字符开头/以某些字符结尾的单元格。
我试图在PostgreSQL中使用它,但是系统告诉我操作符不存在。我的查询语句如下:
SELECT * FROM "City"."models" 
WHERE (("City"."models".identifier NOT LIKE'%$%') 
AND
     (("City"."models".id LIKE '%2%') 
     OR 
     ("City"."models".id LIKE '%1%'))) 

ORDER BY "City"."models".town_id ASC LIMIT 10

列类型:

identifier->uuid
id->int
town_id->int

我的错误在哪里?


请向我们展示一些样本数据,最好在 SQLFiddle 上发布您的查询。 - Radu Gheorghiu
你应该真正地发布完整的错误信息。 - A ツ
我的猜测是 "identifier" 和 "id" 不是字符串。LIKE 不能用于数值类型的值。 - CFreitas
1
“LIKE” 不适用于整数,您需要使用类似 CAST(id as VARCHAR) LIKE '%2%' 的东西。但总的来说,这看起来很奇怪,为什么要像文本一样过滤整数呢? - bereal
它看起来很奇怪,我确信错误信息准确地告诉他int不能与LIKE一起使用。 - A ツ
错误消息的一部分将是“ERROR: operator does not exist: integer !~~ unknown” - CFreitas
1个回答

3

试试这个:

SELECT * FROM "City"."models" 
WHERE (("City"."models".identifier::varchar NOT LIKE'%$%') 
AND
     (("City"."models".id::varchar LIKE '%2%') 
     OR 
     ("City"."models".id::varchar LIKE '%1%'))) 

ORDER BY "City"."models".town_id ASC LIMIT 10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接