【问题标题】:P/L SQL search query盈亏 SQL 搜索查询
【发布时间】:2015-03-09 10:57:50
【问题描述】:

我有一个简单的 p/l sql PROCEDURE,如下所示 当用户通常没有输入任何搜索词时,seach_ 得到“ALL”值,我需要 myTB 表中的所有数据

当用户输入值为“abc”时,我想从 myTB 返回所有匹配的“abc”名称

seach_ VARCHAR2(100) :='ALL';

   IF attr_.EXISTS('SEACRH') THEN
      seach_ := attr_('SEACRH');
   END IF;


SELECT * FORM myTB
WHERE (NAME LIKE '%seach_%') OR (seach_ = 'ALL')

当用户输入一些值时,我的选择不返回任何值我应该怎么做才能得到预期的结果?

注意:我觉得 NAME LIKE '%seach_%' 不适合我

【问题讨论】:

  • 删除撇号并重试。此时您的查询正在搜索 %seach_% 而不是 %user_input%

标签: plsql oracle11g


【解决方案1】:

您需要将搜索值与通配符连接起来:

SELECT * FROM myTB
WHERE seach_ = 'ALL'
OR NAME LIKE '%' || seach_ || '%'

你也有FORM而不是FROM,但由于你的程序不会用它编译,大概这是在创建问题时引入的一个错字。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2015-07-14
    • 2016-03-08
    相关资源
    最近更新 更多