请问,在Transact-SQL查询中,我应该何时在字符串前使用N前缀?我已经开始使用数据库了,我没有使用这样的查询得到任何结果
SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%'
直到我将模式更改为N’%а_pattern%’.我以前从来没有添加这个前缀,所以我很好奇. a_field被定义为nvarchar(255),但我认为原因是别的.
解决方法
以下文章提供了有关该问题的一些很好的信息.简短的回答是你正在使用的unicode列和非unicode字符串文字之间存在类型不匹配.从知识库文章看,省略N前缀在某些情况下可能仍然有效,但这取决于数据库的代码页和排序规则设置.这可能解释了行为的变化,如果您之前使用无前缀方法取得了成功.
https://support.microsoft.com/en-us/kb/239530