У меня есть таблица с колонкой firstName
типа NVARCHAR
, Я пишу запрос для поиска по частичному имени. Мой запрос выглядит так:
$params[':firstName'] = "%วุฒิหิรัญทิ%";
$query = "SELECT * FROM users WHERE firstName LIKE :firstName";
$matches = $this-db->fetchAll($query, $params);
Это не работает, и я прочитал, что в MSSQL мне нужно использовать N
искать символы Юникода. Как мне сделать это в подготовленном заявлении? Я пытался заменить :firstName
с N:firstName
и это не сработало.
РЕДАКТИРОВАТЬ: Это решение работает для символов в наборе символов латинского 1. Это не работает для символов за пределами этого набора. Для специальных символов я могу запустить запрос, например, SELECT * FROM users WHERE firstName LIKE N'%วุฒิหิรัญท%'
и это прекрасно работает, но я не могу заставить его работать с подготовленными утверждениями.
Вы не используете подстановочные знаки SQL правильно;
SELECT * FROM users WHERE firstName LIKE '%' + :firstName + '%'
Символы% являются оператором подстановочного знака SQL, приведенный выше должен работать для вас.
Других решений пока нет …