2012-04-29 45 views
7

我想從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"; 

然後我有一個空的下拉列表中! 很奇怪!

在此先感謝。

回答

11

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