我有一个表(ResponseData)与列RESPONSE_ID,RESPONSEDATA,KEY1,KEY2,KEY3,KEY4,VALUE1,VALUE2,VALUE3,VALUE4 用户可以插入数据任何以下类别。更快的搜索查询与动态哪里列oracle db
- 1, “我的回答一个”, “姓名”,NULL,NULL,NULL, “苹果”,NULL,NULL,NULL
- 2, “我的回答两个”, “姓名”,“年龄”,NULL,NULL, “苹果”, “22”,NULL,NULL
在不同的页面后来当Responsedata与NAME =用户请求 “苹果”,年龄= “32” 应该返回记录1,因为它具有匹配的属性名称 如果name =“Apple”age =“22”的用户请求应返回记录1和2,因为它与记录1按名称匹配,记录2按名称和年龄匹配。
我们如何在这种情况下形成搜索查询。 我试图通过utl_match.jaro_winkler_similarity如下 utl_match.jaro_winkler_similarity(上(VALUE1 | VALUE3 | VALUE4),(USERINPUTREQUEST)),通过获取所有现有记录中的最高匹配记录,但它在给出更多的查询时给出延迟响应在桌上的数字记录。 赞赏您的输入。
你可以将当前表分成两个 - 包含前两列的父表和包含键值对的子表?它可以简化查询(不需要猜测4对列中的哪一列保存数据)。 –