Если вы просто замените '=' оператором LIKE, вы получите тот же самый ответ с точным соответствием, что и ваш текущий запрос.Я предполагаю, что вы хотели бы использовать оператор LIKE, чтобы сделать что-то другое (например, a начинается с поиска).
Я предоставил вам, как базы данных SQL обычно делают это, но если это работает для вас, зависит от того, насколько SQL совместимдиалект SQL, используемый движком HTML5:
Во-первых, это зависит от синтаксиса конкатернизации.Во-вторых, это зависит от конкатернизации при использовании NULL + строка, создающая NULL или строку.Большинство профессиональных баз данных выдают NULL (это хорошо для вас, потому что тогда это будет работать).
Следующее должно работать на MySQL или Oracle и некоторых других базах данных:
SELECT * FROM bdreminders
WHERE firstname LIKE IFNULL( CONCAT(?,'%'), firstname)
AND lastname LIKE IFNULL( CONCAT(?,'%'), lastname)
AND baughtgift LIKE IFNULL( CONCAT(?,'%'), baughtgift)
ORDER BY firstname asc
или (для Oracle, Postgre и других)
SELECT * FROM bdreminders
WHERE firstname LIKE IFNULL( ? ||'%', firstname)
AND lastname LIKE IFNULL( ? || '%', lastname)
AND baughtgift LIKE IFNULL( ? || '%', baughtgift)
ORDER BY firstname asc
или (для SQL-сервера и других)
SELECT * FROM bdreminders
WHERE firstname LIKE IFNULL( ? +'%', firstname)
AND lastname LIKE IFNULL( ? + '%', lastname)
AND baughtgift LIKE IFNULL( ? + '%', baughtgift)
ORDER BY firstname asc
Сначала я бы попробовал последний.Если вышеприведенное не работает и вы получаете все bdreminders, база данных не конвертирует строку NULL + в NULL.В этом случае я не думаю, что вы можете использовать ISNULL, так как он вернет первое ненулевое значение и, таким образом, всегда вернет «%».