空字段为何不为空?——困惑!在线等!

时间:2021-05-07 16:11:46
我的总表里有个字段“BUSINESS_TIME”类型为“char”,字段长度为100,可以为空。
我从子表中把相应的字段插入总表后,BUSINESS_TIME字段的实际长度就大于100了。我查了子表的字段长度,是正确的。但是,插入到总表后长度就发生了改变。有些记录中business_time本来为空的。插入总表里面就变成了“                                                                                                                                                                                                                                                ”,这引号里面是我从数据库表中拷出来的信息。我用SELECT business_time  FROM poi_collection where BUSINESS_TIME="                                                                                                                                                                                                                                                "来筛选的话,也能筛选出东西。而且很多本来记录就是一个时间例如“12:30-19:30”,结果我插入总表里就莫名的多出来了一串空字符。这是什么原因?我应该怎么改?

11 个解决方案

#1


在补充一下,子表里business_time字段类型是“varchar”
请高手指点!谢谢!

#2


类型为varchar时,如果时varchar(10)的话,填入一个字符'a'那么实际字符就是'a',如果变为了char型,它会以空格填满后面的空白,直到值为10十个字符,那么char(10)插入'a'就会变成'a           '这样的东西。

#3


那我现在应该怎么改呢?我的总表里已经有几万条数据了。重新插入已经有点不现实了。

#4


你如果要全空的字段为null,可以用 update `table` set BUSINESS_TIME=null where BUSINESS_TIME='';

#5


我用“SELECT *  FROM poi_collection where business_time=""”来查了一下,查询的结果和我用“SELECT   business_time     FROM   poi_collection   where   BUSINESS_TIME="                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 "”查出来的结果是不一样的。那我如果用“update   `table`   set   BUSINESS_TIME=null   where   BUSINESS_TIME='';”来更新的话,会不会那些长串空格的记录还是更新不了呢?

#6


我以前更新这种,用''这个条件就可以查出所有的空字段的了,你可以试试嘛,你的结果不一样是不是''的结果包含
'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  '这样的结果?

#7


你用char类型保存数据,拿出来得时候记得用trim去空格才可以,如果不是的话用这个字段做对比就可能会出错

#8


不是这样子的。是''的结果和"                        "的结果是不一样的。
我在"                        "的结果中记录了几条去和""的对比,结果根本没有。

#9


我觉得这两种查询结果是并列的。不重合。

#10


我的不会哦,帮不了你了。

#11


呵呵,已经很帮忙了。谢谢。

#1


在补充一下,子表里business_time字段类型是“varchar”
请高手指点!谢谢!

#2


类型为varchar时,如果时varchar(10)的话,填入一个字符'a'那么实际字符就是'a',如果变为了char型,它会以空格填满后面的空白,直到值为10十个字符,那么char(10)插入'a'就会变成'a           '这样的东西。

#3


那我现在应该怎么改呢?我的总表里已经有几万条数据了。重新插入已经有点不现实了。

#4


你如果要全空的字段为null,可以用 update `table` set BUSINESS_TIME=null where BUSINESS_TIME='';

#5


我用“SELECT *  FROM poi_collection where business_time=""”来查了一下,查询的结果和我用“SELECT   business_time     FROM   poi_collection   where   BUSINESS_TIME="                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 "”查出来的结果是不一样的。那我如果用“update   `table`   set   BUSINESS_TIME=null   where   BUSINESS_TIME='';”来更新的话,会不会那些长串空格的记录还是更新不了呢?

#6


我以前更新这种,用''这个条件就可以查出所有的空字段的了,你可以试试嘛,你的结果不一样是不是''的结果包含
'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  '这样的结果?

#7


你用char类型保存数据,拿出来得时候记得用trim去空格才可以,如果不是的话用这个字段做对比就可能会出错

#8


不是这样子的。是''的结果和"                        "的结果是不一样的。
我在"                        "的结果中记录了几条去和""的对比,结果根本没有。

#9


我觉得这两种查询结果是并列的。不重合。

#10


我的不会哦,帮不了你了。

#11


呵呵,已经很帮忙了。谢谢。