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>
相关推荐
还是鼠鼠3 小时前
SpringBoot-准备工作-工程搭建
java·数据库·spring boot·后端·spring·maven·mybatis
悟能不能悟13 小时前
在 MyBatis 的xml中,什么时候大于号和小于号可以不用转义
xml·java·mybatis
慌糖14 小时前
XML重复查询一条Sql语句??怎么解决
xml·数据库·sql
胖大和尚17 小时前
在 XML 节点名称前添加前缀
xml
于冬恋1 天前
Mybatis(XML映射文件、动态SQL)
mybatis
代码老y1 天前
Spring Boot + MyBatis + Vue:全栈开发的深度剖析与实践指南
vue.js·spring boot·mybatis
tsxchen1 天前
在MyBatis中$和#有什么区别
数据库·mybatis
casual_clover2 天前
Android 中 解析 XML 字符串的几种方式
android·xml
代码老y2 天前
Spring Boot + MyBatis + Vue:全栈开发中的最佳实践
vue.js·spring boot·mybatis
代码老y2 天前
Spring Boot + MyBatis + Vue:从零到一构建全栈应用
vue.js·spring boot·mybatis