Postgresql小写来比较数据

时间:2012-04-29 02:43:44

标签: postgresql lowercase

我希望从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) 当然,用户更喜欢在搜索框中插入小写以搜索名称(例如lori)。但由于它以大写形式存储,我需要转换它。

我尝试了你的建议:

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

然后我得到一个空的下拉列表! 非常奇怪!

提前感谢。

1 个答案:

答案 0 :(得分:14)

Google is your friend

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