Postgresql小写字母比较数据

问题描述:

我想从Postgresql数据库中的一行中获取内容,并将它的小写版本与用户输入的小写版本进行比较,以检查它是否存在于数据库中。Postgresql小写字母比较数据

我想:

"SELECT LOWER(name) FROM user_names WHERE name LIKE '%$search%' ORDER BY name ASC" 

但使查询根本不工作。

编辑

我想实现自动完成jQuery UI的喜欢这里: http://jqueryui.com/demos/autocomplete/#remote 的搜索框(地名)

使用JavaScript和PHP。

PHP代码:

$search = ($_GET['term']); 
     if (!$con) 
     { die('Could not connect: ' . pg_last_error());} 

     else 
     { 

     $sql = "SELECT name FROM users_table WHERE name LIKE '%$search%' ORDER BY name ASC"; 
     $result = pg_query($sql); 
     $json = '['; 
     $first = true; 
     while ($row = pg_fetch_array($result)) 
     { 

     if (!$first) { $json .= ','; } else { $first = false; } 
     $json .= '{"value":"'.$row['name'].'"}'; 
    } 
    $json .= ']'; 
    echo $json; 

    exit(); 

    } 

JavaScript代码:

$(document).ready(function() 
    { 
     $('#auto').autocomplete(
     { 
      source: "./file.php", 
      minLength: 3 

     }) 

}) 

所有上述工作伟大的..酷似演示这里:http://jqueryui.com/demos/autocomplete/#remote

我的问题是,数据库中以大写形式存储的名称(例如LORI) ,并且用户当然希望在搜索框中插入小写字母来搜索姓名(例如,洛瑞)。但由于它以大写形式存储,我需要将其转换。

我想为你的建议:

$sql = "SELECT LOWER(name) FROM users_table WHERE name ILIKE '%$search%' ORDER BY name ASC"; 

然后我有一个空的下拉列表中! 很奇怪!

在此先感谢。

Google is your friend

SELECT LOWER(name) FROM user_names 
WHERE name ILIKE '%$search%' ORDER BY name ASC 
+0

感谢,但我依然从JSON有一个空的数组,如果我使用较低 – Shadin 2012-04-29 05:17:33

+0

@Shadin对不起,我是不是在我的岗位很清楚。建议是把LIKE改成ILIKE – dwurf 2012-04-29 05:21:16

+0

是的,我注意到了,试了一下。我不明白为什么我得到一个空阵列 – Shadin 2012-04-29 10:13:49