像操作员不在 oracle 数据库中工作

like operator not working in oracle database

我正在尝试从 oracle 数据库的 onkeyup 函数中获取数据。这是我的 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 匹配时,我使用 LIKE 运算符从 onkeyup 获得,但我得到的输出是空的,尽管它们是名称匹配变量。当我使用以下查询时,我无法理解为什么查询失败。

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

例如,当我在带有 id="name" 的输入框中键入 a 时,我得到的警报输出如下所示。那就是我得到零结果。

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

我的数据库table结构供参考:

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

请任何人帮助我,为什么我在使用 LIKE 运算符时得到空结果

使用

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

原因:

默认情况下,oracle 会进行案例 Sensitive 搜索。因此,将您的字符串转换为较低的值并将 db 值也转换为较低的值,然后进行比较。

参考here,here