今天群里一个朋友问如何插入® 特殊字符,我做了几次测试都没有成功,很郁闷,后来有人说在插入的字符串前加N就可了,我试了一下果然可以
update t_test set test_text = '® ' 不成功
update t_test set test_text = N'® ' 成功
为什么呢,MSDN上原文是这样子说的:
-----------------------------------------------------------------------------
使用 N 前缀
在服务器上执行的代码中(例如在存储过程和触发器中)显示的 Unicode 字符串常量必须以大写字母 N 为前缀。即使所引用的列已定义为 Unicode 类型,也应如此。如果不使用 N 前缀,字符串将转换为数据库的默认代码页。这可能导致不识别某些字符。
例如,在前面示例中创建的存储过程可以按以下方式在服务器上执行:复制代码
EXECUTE Product_Info @name = N'Chain'
使用 N 前缀的要求适用于服务器上产生的字符串常量和从客户端发送的字符串常量。
-------------------------------------------------------------------------------
原来我们平时在往服务器上传送字符串时它会将字符串处理为服务器商的Unicode字符串然后再插入到SQL数据库中,如果加上N之后他就会直接使用客户端传过来的字符串。