当前位置: 首页 > 知识库问答 >
问题:

oracle db上动态where列的快速搜索查询

祁修平
2023-03-14

我有一个表(ResponseData),其中列RESPONSE_ID、ResponseData、KEY1、KEY2、KEY3、KEY4、VALUE1、VALUE2、VALUE3、VALUE4用户可以插入以下任何类别数据。

  • 1,“My response One”,“name”,null,null,null,“Apple”,null,null,null
  • 2,“My response Two”,“Name”,“Age”,null,null,“Apple”,“22”,null,null

稍后在不同页面中,当用户请求name=“apple”Responsedata时,如果name=“apple”age=“22”用户请求name=“apple”age=“22”用户请求name=“apple”age=“22”用户请求name=“apple”age=“22”用户请求name=“apple”age=“22”age=“22”age=“22”age=“22”age=“22”age=“22”age=“

如何在这个场景中形成搜索查询。我尝试使用UTL_match.jaro_winkler_similary(uper(VALUE1VALUE2VALUE3VALUE4),(USERINPUTREQUEST))以下的UTL_match.jaro_winkler_similary,方法是在所有现有记录中获取最匹配的记录。但是,如果在表中激发具有更多记录的查询,则会产生延迟响应。感谢您的投入。

共有1个答案

卢恩
2023-03-14
declare
  cursor c(k1 varchar2,
           k2 varchar2,
           k3 varchar2,
           k4 varchar2,
           v1 varchar2,
           v2 varchar2,
           v3 varchar2,
           v4 varchar2)
   is(select *
        from (select ResponseData.*,
                     case
                       when    (k1 = key1 and v1 <> value1)
                            or (k1 = key2 and v1 <> value2)
                            or (k1 = key3 and v1 <> value3)
                            or (k1 = key4 and v1 <> value4)
                            or (k2 = key1 and v2 <> value1)
                            or (k2 = key2 and v2 <> value2)
                            or (k2 = key3 and v2 <> value3)
                            or (k2 = key4 and v2 <> value4)
                            or (k3 = key1 and v3 <> value1)
                            or (k3 = key2 and v3 <> value2)
                            or (k3 = key3 and v3 <> value3)
                            or (k3 = key4 and v3 <> value4)
                            or (k4 = key1 and v4 <> value1)
                            or (k4 = key2 and v4 <> value2)
                            or (k4 = key3 and v4 <> value3)
                            or (k4 = key4 and v4 <> value4)
                       then 'not match'
                       else 'match'
                     end ok
                from ResponseData)
       where ok = 'match'
          or ok = 'not match');  -- debug mode
begin
  for r in c('name', null, null, 'age', 'Apple', null, null, '22') loop
    dbms_output.put_line(r.id||': ('||r.key1||'=>'||r.value1||'), ('||r.key2||'=>'||r.value2||'), ('
                                    ||r.key3||'=>'||r.value3||'), ('||r.key4||'=>'||r.value4||') - '||r.ok);
  end loop;
end;
 类似资料:
  • 我需要将动态查询参数发送到 REST Web 服务 GET 方法[如下所示]。 主机:端口/应用程序?字段1=值1 消费者可以将参数发送到字段和值。每个字段都映射到值。 有了这种类型的要求,我无法在服务器端方法上编写一组有限的 QueryParams。 我在用python和fastapi 谢谢你。

  • 如何在android Studio中快速搜索一个类文件或整个资源文件?

  • 我有一个包含100,000个集合的数组。每个集合包含1,000,000以下的自然数。我必须找到有序对的数量{m,n},其中0 例如,我有两个集合set1={1,2,4}set2={1,3}。5以下所有可能的有序数对是{1,2}、{1,3}、{1,4}、{2,3}、{2,4}和{3,4}。集合1中不同时存在的低于5的数的有序对是{1,3}、{2,3}和{3,4}。集合2中5以下缺失的有序对是{1,2

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • 问题内容: 我正在尝试根据用户输入创建动态搜索查询。 用户可以不填写任何,部分或全部字段。 该查询在表中搜索符合所有要求的记录。 现在,我已经完成了研究,并且发现了执行此操作的多种方法。但是它们都不起作用,如果起作用了,那么它们就不可行了。 试图: 目前,我正在创建这样的查询: 该查询有效,但前提是您填写了所有字段。 我是从stackoverflow文章中得到的,我再也找不到了,它说: 如果用户已

  • 问题内容: 在我的Rails应用程序中,我具有允许查找与当前登录用户最接近的用户的功能。我为此使用了Geocoder gem。在用户模型中,我具有如下范围: 这非常有效,但是对于大量用户而言却很慢。当我调用此作用域时,它将生成以下sql查询: 我正在尝试为此创建索引,但它们不起作用。我正在尝试以下组合: 我应该如何添加索引以加快此查询的速度? 编辑:我忘记添加我的纬度和经度列是小数。 此查询的AN