关于sql中varchar的长度不正确的问题
最近写个小程序,在数据表中定义了两个字段,姓名、密码,数据类型都是varchar型,长度都是6,如姓名:张三,密码123,可是在vc中用sql语句获取到这两个数据时,后面...
最近写个小程序,在数据表中定义了两个字段,姓名、密码,数据类型都是varchar型,长度都是6,如姓名:张三,密码123,可是在vc中用sql语句获取到这两个数据时,后面都被填了两个空格:‘张三 ’‘123 ‘,不知何故?不是说应该等于实际长度的吗?请高人指点,谢谢
展开
4个回答
展开全部
我觉得您应该首先确认一下存储在数据库中的张三,123的长度,很可能是你出入的时候就已经发生了错误。varchar类型,如果数据库中数据没有空格,取值到变量中,是绝对不可能出现空格的。所以问题很可能在你插入数据的时候就有了。这种按照长度补空格,只有char行才会有。
所以先确定一下数据库表中数据的长度到底是多少?使用len函数查询一下。
select len(用户名), len(密码) from 表名字
看看长度是不是有问题。
另外,如果有空格,可以使用rtrim函数把右边的空格去掉,这样也可以保证数据的准确。
select rtrim(用户名), rtrim(密码) from 表名
ltrim是去左侧空格的函数,rtrim是去右侧空格的函数。
因为SQLSERVER中没有trim函数同时去掉左侧右侧的空格,所以要分别使用ltrim和rtrim来去掉左边和右边的空格。你这个只是在右侧补了空格,使用rtrim就够用了。
所以先确定一下数据库表中数据的长度到底是多少?使用len函数查询一下。
select len(用户名), len(密码) from 表名字
看看长度是不是有问题。
另外,如果有空格,可以使用rtrim函数把右边的空格去掉,这样也可以保证数据的准确。
select rtrim(用户名), rtrim(密码) from 表名
ltrim是去左侧空格的函数,rtrim是去右侧空格的函数。
因为SQLSERVER中没有trim函数同时去掉左侧右侧的空格,所以要分别使用ltrim和rtrim来去掉左边和右边的空格。你这个只是在右侧补了空格,使用rtrim就够用了。
追问
通过用你的方法查询了一下,我的表里面的确没有错,姓名的长度是2,密码的长度的确是3,但是结果的确有不对,我只有把密码varchar的长度设为3才可以在vc里得到正确的结果,真的很纠结啊。
追答
这样的话,我觉得和你SQL本身没多大关系,应该是你VC里面赋值的问题。
你可以同时查出几个,比如你非变量限制只是用户名和密码,同时你也把取出的长度也赋值给变量,我觉得是不是你在赋值给变量的时候,VC内部由于变量类型还是某种问题进行了处理给你的变量用空格补位数了?
select 用户名, 密码, len(用户名), len(密码) from 表
把这个查询出的四个都给变量,前两个已经知道是有空格了,看看后两个得到的长度是不是有空格的?我觉得肯定是没有的,应该是在赋值的时候产生的问题,和数据库应该没关系。
展开全部
select length('张三')
from dual;
select lengthb('张三')
from dual;
获取数据的时候 使用trim就可以去掉多余的空格
from dual;
select lengthb('张三')
from dual;
获取数据的时候 使用trim就可以去掉多余的空格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
插入数据的时候就把空格写进去了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我以前也遇到过这个问题。不管加什么数据都会我个空格。我忘了怎么解决了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询