2016-12-07 132 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'然后在您的查询变量中使用它。