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 小时前
SQL Server笔记 -- 第69章:时态表
数据库·笔记·后端·sql·microsoft·sqlserver
亓才孓1 小时前
【SQLSyntaxErrorException】SQL语法错误
数据库·sql·mybatis
亓才孓1 小时前
【MyBatis Exception】SQLSyntaxErrorException(按批修改不加配置会报错)
java·开发语言·mybatis
亓才孓1 小时前
【MyBatis Runtime Exception】自动驼峰映射对Map不生效,应该在查询中起别名
java·windows·mybatis
亓才孓2 小时前
【MyBatis Plus】MyBatis Plus框架
mybatis
树码小子2 小时前
图书管理系统(3)修改图书接口
spring boot·mybatis·图书管理系统
山岚的运维笔记2 小时前
SQL Server笔记 -- 第70章:临时表的使用
数据库·笔记·sql·microsoft·oracle·sqlserver
知识分享小能手3 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019 安全机制 — 语法知识点及使用方法详解(18)
数据库·学习·sqlserver
亓才孓14 小时前
【MyBatis Exception】Public Key Retrieval is not allowed
java·数据库·spring boot·mybatis
山岚的运维笔记18 小时前
SQL Server笔记 -- 第68章:内存中 OLTP(Hekaton)
数据库·笔记·sql·microsoft·sqlserver