Ale*_*yev 41 sql-server varchar
请您告诉我,我什么时候应该在 Transact-SQL 查询中的字符串前使用 N 前缀?我已经开始使用一个数据库,使用这样的查询我没有得到任何结果
SELECT * FROM a_table WHERE a_field LIKE '%?_pattern%'
Run Code Online (Sandbox Code Playgroud)
直到我将模式更改为N'%?_pattern%'. 过去我从来没有添加过这个前缀,所以我很好奇。a_field被定义为nvarchar(255),但我认为原因是别的。
Cha*_*lie 31
以下文章提供了有关该问题的一些很好的信息。简短的回答只是您正在使用的 unicode 列和非 unicode 字符串文字之间存在类型不匹配。从知识库文章来看,在某些情况下,省略 N 前缀似乎仍然有效,但这取决于数据库的代码页和排序规则设置。如果您之前使用无前缀方法取得了成功,这可能解释了行为的变化。
https://support.microsoft.com/en-us/kb/239530
小智 6
这表示后续字符串是 Unicode(N 实际上代表国家语言字符集)。这意味着您传递的是 NCHAR、NVARCHAR 或 NTEXT 值,而不是 CHAR、VARCHAR 或 TEXT。有关这些数据类型的比较,请参阅文章 #2354。
Unicode 通常用于数据库应用程序,这些应用程序旨在简化扩展到英语和西欧代码页(例如中文)之外的代码页。Unicode 的设计使扩展字符集仍然可以“适应”数据库列。
| 归档时间: |
|
| 查看次数: |
58963 次 |
| 最近记录: |