请教关于update的一个问题
对表t_a的字段(类型为char 30)comcname做update如下:update t_a set comcname=comcname||"号" where ...
结果不报错,但是该字段并未发生变化;
但是:
假设comcname之前为“解放大道78”,update语句写成
update t_a set comcname="解放大道78号" where ...
结果字段被更改。
这可能是什么问题造成的? 因为你的数据类型为char(30)而不是varchar(30),当数据为“解放大道78”时,数据存储的时候其实已经在后补充了足够的空格凑足30个字符了。这样你在让其添加个“号”,就超过30个的限制,自动截断了,所以还是原数据。
解决这个问题有两个方法,
你要么将此表的这个列的类型改为varchar(30),要么把update语句改成如下:
update t_a set comcname=trim(comcname) || "号" where ...
varchar数据类型按照实际数据长度存储数据,char型数据不足是要自动补充空格的。
[ 本帖最后由 xxyyy 于 2007-4-25 17:56 编辑 ]
回复 2楼 xxyyy 的帖子
大牛 “||”就是表示在最后添加嘛?“update t_a set comcname=comcname||"号" where ...”这个语句我不是很明白,麻烦哪位大虾给解惑一下啊,谢谢啊,我是新手^_^回复 4楼 Lee_unixlearner 的帖子
"||"就是字符串连接符。其他有些数据库中用的"+"或者",",是一样的功能。
页:
[1]