代码之家  ›  专栏  ›  技术社区  ›  rji rji

类似于在oracle数据库中不工作的运算符

  •  2
  • rji rji  · 技术社区  · 10 年前

    我正在尝试通过keyup函数从oracle数据库中获取数据。这是我的HTML代码。

        <form name="filter_name"action="jqry.php" method="post">
           <input class="name" name="name" type="text" id="name">
           <input name="submit" type="submit" value="submit" />
        </form>
    

    下面是我的jquery代码:

        $(function(){
            $("#name").keyup(function() {
            var name = $(this).val();
            var dataString = 'name='+ name;
             if(name!='') {
                $.ajax({ 
                   type: "POST",
                   url: "connectdb.php",
                   data: dataString,
                   cache: false,
                   success: function(html) {
                      alert(html);
                   }
                 });
                }
                return false;
              });
            });
    

    最初,我在 connectdb.php

        <?php          
           $text = $_POST['name']; 
           // I have given db connections here
           $query="SELECT EMP_NAME FROM EMPLOYEES";
           $stid = oci_parse($conn, $query); 
           oci_execute($stid, OCI_DEFAULT); 
           echo "<table border='1'>\n";
           while ($row = oci_fetch_array($stid, OCI_ASSOC)) { 
             echo "<tr>\n";     
             foreach ($row as $item) {         
                  echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";     
                }
               echo "</tr>\n";
             }
          echo "</table>\n";
          oci_free_statement($stid);
          oci_close($conn);
         ?>
    

    为此,我在警报中正确获得了输出

        <table border="1">
         <tr>
          <td>ABC</td>
         </tr>
         <tr>
           <td>XYZ</td>
         </tr>
         <tr>
           <td>PQR</td>
         </tr>
       </table>
    

    但当我尝试将名称与POST变量匹配时, $text ,我从onkeyup使用 LIKE 运算符,我得到了空输出,尽管它们的名称与变量匹配。当我使用以下查询时,我无法理解为什么查询失败。

        $query = "SELECT EMP_NAME FROM EMPLOYEES WHERE NAME LIKE '%".$text."%'";
    

    输入时的示例 a 在输入框中 id="name" ,我得到的警报输出如下。也就是说,我得到的结果是零。

        <table border="1">
        </table>
    

    这里是我的数据库表结构,以供参考:

        |  EMP ID  |  EMP_NAME  |
        |    1     |    ABC     |
        |    2     |    XYZ     |
        |    3     |    PQR     |
    

    请任何人帮我解释为什么我使用LIKE运算符时会得到空结果

    1 回复  |  直到 10 年前
        1
  •  2
  •   Community CDub    8 年前

    使用

    "...WHERE LOWER(NAME) like lower('%".$text."%')...."
    

    原因:

    默认情况下,oracle会区分大小写 Sensitive 搜索所以将字符串转换为lower,将db值也转换为lowers,然后进行比较。

    参考 here , here