Использование LIKE против целого числа - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь выполнить поиск LIKE по NumberID, которые хранятся как INTEGER.Могу ли я легко редактировать код, который я использую для поиска по varchar, а также по целочисленному поиску?

$sql .= " WHERE NumberID LIKE '%$search_term%'";

Элемент search_term взят из поля PHP, которое пользователь может использовать для ввода информации для поиска.В идеале я хотел бы избежать изменения базы данных с целого числа на данный момент.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Это делает работу:

$sql .=<<<AZE
where convert(NumberID, char(20)) like '%{$search_term}%'
AZE;

Хитрость заключается в приведении NumberID к строке.Приведение правой части слова «like» к строке - это нонсенс.

0 голосов
/ 25 февраля 2019

Ваш текущий код должен фактически работать как есть, хотя с технической точки зрения вы должны сначала привести ваше целое число к тексту перед построением выражения LIKE:

WHERE NumberID LIKE CONCAT('%', CAST(? AS CHAR(50)), '%')

к заполнителю ?, который вы затем привязали быВаша целочисленная переменная $search_term.

...