首页 > 其他 > 详细

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

时间:2014-09-28 19:34:26      阅读:363      评论:0      收藏:0      [点我收藏+]

问题重现

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类型的长度而导致的问题

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!