2016-12-07 2 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 происходит от ввода/вывода (пользователь, файл, сеть и т.д.).

1

Если вы хотите перейти в верхний регистр, вам следует преобразовать переменную searchValue eg.

var newSearchValue = (select initcatp(searchValue)) ; 

Это преобразует 'шахид' в 'Шахид'. Затем используйте это в своей переменной запроса.