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>
相关推荐
看腻了那片水11 小时前
开源一个对业务代码零侵入的透明数据治理框架 —— 【sangsang】
java·mybatis
ffqws_14 小时前
MyBatis 动态 SQL 详解:从原理到实战
java·sql·mybatis
浮尘笔记14 小时前
在Snowy后台无需编码实现自动化生成CRUD操作流程
java·开发语言·经验分享·spring boot·后端·程序人生·mybatis
河阿里17 小时前
MyBatis:高效开发全流程+示例
mybatis
随风,奔跑17 小时前
Mybatis-Plus学习笔记
java·笔记·学习·mybatis
wenha1 天前
数据库隔离级别
数据库·mysql·sqlserver·隔离级别
~小先生~1 天前
sqlserver 外键、级联使用
数据库·sqlserver
Mr_pyx1 天前
Java 注解(Annotation)详解:从基础到 APT 实战
java·数据库·sqlserver
Full Stack Developme1 天前
MyBatis-Plus YAML 配置教程
mybatis
xuhaoyu_cpp_java1 天前
MyBatis学习(五)
经验分享·笔记·学习·mybatis