2016-12-07 134 views
1
var searchValue = 'shahid'; 
var query = ("select * from students where name ilike '%"+searchValue+"%'"); 

這是我的psql查詢,但它沒有返回任何值。所以我只是安慰查詢來了解執行情況。當我利用搜索值(沙希德)的第一個字母psql查詢不返回正確的結果?

select * from students where name ilike 'hahid%' 

,它的執行完美:

查詢是作爲執行。

回答

0

這一點,缺少一個「%」的左側,將只匹配件事開始hahid

select * from students where name ilike 'hahid%' 

這是不一樣的,因爲這

select * from students where name ilike 'Shahid%' 

將匹配只有開頭Shahid。現在,如果你想要的東西,它可以匹配任何hahid那麼你要

select * from students where name ilike '%hahid%' 

順便說一句,你的榜樣是非常不安全的,如果searchValue來自I/O(用戶,文件,網絡等)。

1

如果你想通過大寫,你應該轉換變量searchValue 例如。

var newSearchValue = (select initcatp(searchValue)) ; 

這會將'shahid'轉換爲'Shahid'然後在您的查詢變量中使用它。