【问题标题】:PostgreSQL query, LIKE operatorPostgreSQL 查询,LIKE 运算符
【发布时间】:2015-10-07 07:54:18
【问题描述】:

文档告诉我 LIKENOT LIKE 在 SQL 中用于搜索单元格是否包含/开始/结束于某些字符。

我试图在 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 中发布您的查询
  • 你真的应该发布完整的错误信息。
  • 我的猜测是“标识符”和“id”不是字符串。 LIKE 不适用于数值。
  • LIKE 不适用于整数,你必须使用类似CAST(id as VARCHAR) LIKE '%2%' 等的东西。但这看起来很奇怪,你为什么要过滤像文本这样的整数?
  • 它看起来很奇怪,我确信错误消息告诉他 int 不能与LIKE一起使用

标签: sql postgresql sql-like


【解决方案1】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2021-02-20
    • 1970-01-01
    • 2022-10-01
    • 2010-12-26
    • 1970-01-01
    • 2014-10-02
    相关资源
    最近更新 更多