Sqlserver 模糊查询中文及在mybatis xml【非中文不匹配查询】N@P2问题

问题

sqlserver模糊查询或相等,两者都无法查询。

百度方案解释

Like 后的N是表示unicode字符。获取SQL Server数据库中Unicode类型的数据时,字符串常量必须以大写字母 N 开头,否则字符串将转换为数据库的默认代码页(字符集编码),这可能导致字符串内容发生变化,无法识别。

在SQL界面中

sql 复制代码
select * from table where column like N'%文档%'

但是在mybatis这样就不好写了。

注意点

一定不要使用mybatis的where标签,否则mybatis会识别为N@P2
N后面必须用 '' + #{queryColumn} 这种格式

模糊查询

sql 复制代码
select * from table where 
<if test="queryColumn != null and queryColumn != ''">
	column like N'%'+#{queryColumn}+'%'
</if>

相等查询

结合上面,我们发现N后面不能直接拼接#{queryColumn}参数,否则就会报错!

sql 复制代码
select * from table where 
<if test="queryColumn != null and queryColumn != ''">
	column = N''+#{queryColumn}
</if>
相关推荐
侠客行03178 小时前
Mybatis二级缓存实现详解
java·mybatis·源码阅读
爱丽_12 小时前
MyBatis动态SQL完全指南
服务器·sql·mybatis
ZLZQ_Yuan13 小时前
MyBatis、MyBatis-Plus
数据库·mybatis
迪迦不喝可乐15 小时前
mybatis 源码
mybatis
老马952715 小时前
MyBatis-Plus 动态表名的正确打开方式
后端·mybatis
牛魔王_116 小时前
SqlServer 大数据量分页查询
数据库·sqlserver·分页·查询·翻页
计算机学姐19 小时前
基于SpringBoot的共享单车管理系统【2026最新】
java·spring boot·后端·spring·java-ee·intellij-idea·mybatis
独自破碎E20 小时前
什么是循环依赖
java·mysql·mybatis
用户21903265273520 小时前
能省事”。SpringBoot+MyBatis-Plus:开发效率提升10倍!
java·spring boot·mybatis