我有一个包含firstName
类型的列NVARCHAR
的表格。我正在编写一个查询来按部分名字搜索。我的查询如下:
$params[':firstName'] = "%วุฒิหิรัญทิ%";
$query = "SELECT * FROM users WHERE firstName LIKE :firstName";
$matches = $this-db->fetchAll($query, $params);
这不起作用,我读过在MSSQL中我需要使用N
来搜索Unicode字符。如何在准备好的声明中完成此操作?我尝试将:firstName
替换为N:firstName
,但它无效。
编辑:此解决方案适用于拉丁语1字符集中的字符。它不适用于该集之外的字符。对于特殊字符,我可以直接运行查询,例如SELECT * FROM users WHERE firstName LIKE N'%วุฒิหิรัญท%'
,它可以正常工作,但我无法使用预处理语句。
答案 0 :(得分:-1)
您没有正确使用SQL通配符;
SELECT * FROM users WHERE firstName LIKE '%' + :firstName + '%'
%符号是SQL的通配符运算符,上面的代码应该适合你。