首页 新闻 会员 周边 捐助

 针对char/varchar的列操作, 尤其是WHERE和JOIN中, 禁止使用nchar/nvarchar的常量或者变量

0
悬赏园豆:30 [待解决问题]

针对char/varchar的列操作, 尤其是WHERE和JOIN中, 禁止使用nchar/nvarchar的常量或者变量

请问下为什么呢?

zhaobangcai的主页 zhaobangcai | 初学一级 | 园豆:172
提问于:2015-04-09 21:08
< >
分享
所有回答(1)
0

nchar/nvarchar类型对应的变量最终会转换为char/varchar类型进行查询,发生了隐式转换,弄不好这种隐式转换就会造成数据被截断,导致查询结果不正确。最好的解决方法就是字段是什么数据类型就定义什么数据类型的变量进行查询。

JeffWong | 园豆:2328 (老鸟四级) | 2015-04-09 21:17

能举个具体的例子吗?比如模拟建一个表,写一段会出问题的sql脚本?谢谢。

支持(0) 反对(0) zhaobangcai | 园豆:172 (初学一级) | 2015-04-10 13:04

@zhaobangcai: 给一个有截断的脚本给你,你自己跑一下便知到截断的危害了:

DECLARE @FirstName NVARCHAR(4)

SELECT @FirstName='Jeff测试'

PRINT @FirstName
支持(0) 反对(0) JeffWong | 园豆:2328 (老鸟四级) | 2015-04-10 16:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册