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>
相关推荐
代码的余温1 小时前
Logback.xml配置详解与实战指南
xml·logback
不像程序员的程序媛3 小时前
redis的一些疑问
java·redis·mybatis
野犬寒鸦6 小时前
MyBatis-Plus 中使用 Wrapper 自定义 SQL
java·数据库·后端·sql·mybatis
Favor_Yang11 小时前
SQL Server通过存储过程调用DLL程序集发送飞书卡片消息
sqlserver·飞书·存储过程
代码的余温14 小时前
MyBatis集成Logback日志全攻略
java·tomcat·mybatis·logback
wen's17 小时前
React Native安卓刘海屏适配终极方案:仅需修改 AndroidManifest.xml!
android·xml·react native
Favor_Yang19 小时前
SQL Server通过存储过程实现HTML页面生成
前端·信息可视化·sqlserver·存储过程
sniper_fandc20 小时前
SpringBoot系列—MyBatis(xml使用)
java·spring boot·mybatis
Charlie__ZS21 小时前
若依框架去掉Redis
java·redis·mybatis
面朝大海,春不暖,花不开2 天前
结构化数据格式解析:JSON 与 XML 的技术应用与实践
xml·json