免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2698 | 回复: 4
打印 上一主题 下一主题

请教关于update的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-25 16:26 |只看该作者 |倒序浏览
对表t_a的字段(类型为char 30)comcname做update如下:
update t_a set comcname=comcname||"号" where ...
结果不报错,但是该字段并未发生变化;
但是:
    假设comcname之前为“解放大道78”,update语句写成
update t_a set comcname="解放大道78号" where ...
结果字段被更改。
这可能是什么问题造成的?

论坛徽章:
0
2 [报告]
发表于 2007-04-25 17:55 |只看该作者
因为你的数据类型为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 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-04-26 07:41 |只看该作者

回复 2楼 xxyyy 的帖子

大牛

论坛徽章:
0
4 [报告]
发表于 2007-04-27 00:12 |只看该作者
“||”就是表示在最后添加嘛?“update t_a set comcname=comcname||"号" where ...”这个语句我不是很明白,麻烦哪位大虾给解惑一下啊,谢谢啊,我是新手^_^

论坛徽章:
0
5 [报告]
发表于 2007-04-27 08:14 |只看该作者

回复 4楼 Lee_unixlearner 的帖子

"||"就是字符串连接符。其他有些数据库中用的"+"或者",",是一样的功能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP