码迷,mamicode.com
首页 > 其他好文 > 详细

因未指定NVARCHAR类型的长度而导致的问题

时间:2014-09-28 19:53:15      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:nvarcher长度   nvarchar   

问题重现

1)准备测试数据

新建数据表tb_Student并插入下图所示的测试数据。

bubuko.com,布布扣 

数据表tb_Student的数据

(2)新建查询

DECLARE @teacher_name NVARCHAR
SET @teacher_name = '李四'
SELECT * FROM tb_Student AS s WHERE s.teacher_name = @teacher_name

(3)执行查询

什么也没有得到,但是数据表中明明存在满足条件的数据啊,问题出在哪里?

 

问题分析与解决

通过查阅资料,了解到:不指定NVARCHAR类型的长度时,会使用默认长度,默认长度是1,所以本例中的变量@teacher_name被赋值‘李四时,为其分配的空间只够保存字符‘,而多出来的字符‘将被舍去。所以,这里的查询便变成了:查询学生表中老师姓名为的所有学生信息。很显然,满足该条件的记录不存在。修正这个问题很简单,只需为NVARCHAR类型的@teacher_name变量指定一个长度,这里为其分配十个字节的存储空间,修正后再次执行查询,正确得到下图所示结果。

bubuko.com,布布扣 

图2 查询执行结果

 

总结

本文所讨论的问题真的是太“微不足道”了,但就是这样一些“微不足道”的小问题往往使我们绞尽脑汁。

为了更好的规避这些本不应该出现的“小问题”,最好的方法就是:强化对基础知识的学习,并在工作中不断的实践与总结,仅此而已。

因未指定NVARCHAR类型的长度而导致的问题

标签:nvarcher长度   nvarchar   

原文地址:http://blog.csdn.net/yl2isoft/article/details/39644233

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!