You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle ORDS是否支持NOT LIKE查询?400错误请求如何解决?

Oracle ORDS NOT LIKE 查询问题解决方案

核心结论

Oracle ORDS不支持直接使用$not like或$notlike这类运算符,这是你收到400错误请求的原因。ORDS的q参数查询语法遵循特定规则,仅支持有限的预定义运算符组合。

可行替代方案

1. 使用$not嵌套$like的标准语法

ORDS支持通过$not运算符否定单个条件,正确的NOT LIKE逻辑需要将$like嵌套在$not对象中:

  • 未编码格式:
    https://my.api.com/v1/results?q={"type":{"$not":{"$like":"FP%"}}}
    
  • URL编码格式:
    https://my.api.com/v1/results?q=%7B%22type%22%3A%7B%22%24not%22%3A%7B%22%24like%22%3A%22FP%25%22%7D%7D%7D
    

2. 自定义SQL端点

如果是你自行创建的ORDS端点,直接在资源定义中编写包含NOT LIKE的SQL语句,例如:

SELECT * FROM your_target_table 
WHERE type NOT LIKE :pattern

调用时通过参数传递匹配模式:

https://my.api.com/v1/results?pattern=FP%

3. 添加自定义过滤器(针对自动生成的REST服务)

如果是ORDS自动为数据库表生成的REST服务,可以通过添加PL/SQL过滤器实现NOT LIKE逻辑:

  1. 进入ORDS的REST服务管理界面,找到目标表的REST服务
  2. 添加一个前置或后置过滤器,编写PL/SQL代码过滤数据,示例:
DECLARE
  v_pattern VARCHAR2(100) := owa_util.get_cgi_env('QUERY_STRING');
BEGIN
  IF v_pattern IS NOT NULL THEN
    ords.define_filter(
      p_module_name => 'your_module',
      p_pattern => '/results',
      p_filter_type => 'REQUEST',
      p_filter => 'type NOT LIKE ''' || v_pattern || ''''
    );
  END IF;
END;

内容的提问来源于stack exchange,提问作者Harry Birimirski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 11:22:19