查询一个字符型字段是否包含某些字符常量,可以用“like”来查询但是,反过来呢?查询一个字符型字段是否被包含在另一个字符常量里面,该怎么样做?
举例来说,假设,表“t_www”有两个字段:id , homepage现在,表里面有3条记录,分别是:1   http://www.csdn.net
2   http://www.sina.com.cn
3   http://www.126.com查询“homepage”字段是否包含“csdn”可以用:select * from t_www where homepage like '%csdn%'查询“homepage”字段是否被包含在“http://www.csdn.net/123/abc.htm”里面,怎么写sql语句?说明:这里的“http://www.csdn.net/123/abc.htm”只是举个例子,实际环境中是程序里面的一个参数。
多谢!

解决方案 »

  1.   

    9i之前的话  实现起来比较困难  应该是自己写PL/SQL
      

  2.   

    做个简单的倒换就可以实现你需要的功能,示例如下,你需要自己参考修改即可:
    SQL> SELECT *
      2    FROM departments;DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
    ------------- ------------------------------ ---------- -----------
               10 Administration                        200        1700
               20 Marketing                             201        1800
               30 Purchasing                            114        1700
               40 Human Resources                       203        2400
               50 Shipping                              121        1500
               60 IT                                    103        1400
               70 Public Relations                      204        2700
               80 Sales                                 145        2500
               90 Executive                             100        1700
              100 Finance                               108        1700
              110 Accounting                            205        1700
              120 Treasury                                         1700
              130 Corporate Tax                                    1700
              140 Control And Credit                               1700
              150 Shareholder Services                             1700
              160 Benefits                                         1700
              170 Manufacturing                                    1700
              180 Construction                                     1700
              190 Contracting                                      1700
              200 Operations                                       1700DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
    ------------- ------------------------------ ---------- -----------
              210 IT Support                                       1700
              220 NOC                                              1700
              230 IT Helpdesk                                      1700
              240 Government Sales                                 1700
              250 Retail Sales                                     1700
              260 Recruiting                                       1700
              270 Payroll                                          170027 rows selectedSQL> SELECT *
      2    FROM departments
      3   WHERE department_name LIKE '%ruit%';DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
    ------------- ------------------------------ ---------- -----------
              260 Recruiting                                       1700SQL> SELECT *
      2    FROM departments
      3   WHERE 'aaRecruitingbb' LIKE '%' || department_name || '%';DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
    ------------- ------------------------------ ---------- -----------
              260 Recruiting                                       1700SQL>
      

  3.   

    至于“http://www.csdn.net/123/abc.htm”只是个举例,实际环境中是程序里面的一个参数。
    你可以在程序中将参数传进来,在程序里组织好SQL语句,再提交到Oracle执行即可,或者也可以写一个带参数的返回游标的过程来实现,但基本的还是如上面第三个SQL所示,道理是一样的。SQL> SELECT *
      2    FROM departments
      3   WHERE 'aaRecruitingbb' LIKE '%' || department_name || '%';
      

  4.   

    or
    select * from t_www where instr('http://www.csdn.net/123/abc.htm',homepage)>0;
      

  5.   

    select * from t_www where instr(“http://www.csdn.net/123/abc.htm”,homepage)>0
      

  6.   

    经过试验,我发现应该是
    select * from t_www where instr(homepage,“http://www.csdn.net/123/abc.htm”)>0