Использование подготовленного оператора для поиска данных Unicode в SQLSERVER

У меня есть таблица с колонкой 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'%วุฒิหิรัญท%' и это прекрасно работает, но я не могу заставить его работать с подготовленными утверждениями.

0

Решение

Вы не используете подстановочные знаки SQL правильно;

SELECT * FROM users WHERE firstName LIKE '%' + :firstName + '%'

Символы% являются оператором подстановочного знака SQL, приведенный выше должен работать для вас.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]