Office中国论坛/Access中国论坛

标题: 【新手入门】之八:“连就连”——浅谈“&”和“+”连接符的区别 [打印本页]

作者: roych    时间: 2013-3-4 13:07
标题: 【新手入门】之八:“连就连”——浅谈“&”和“+”连接符的区别
       “连就连,你我结成百年缘,哪个九十七岁死,奈何桥上等三年。”
       这是广西的一首民歌。从形式上来看,对爱情坚贞不渝的歌颂够直接奔放的了。说起这个,是因为前两天回帖时版友时,提及连接符的使用问题。在其它程序语言中,加号和”&“连接符是通用的。但在Access里,主要连接符是”&“,冒冒然给smilingkiss将了一军一时间倒也没无从答对【详见:http://www.office-cn.net/thread-116545-1-1.html】。
       我们先来看看问题,在Where字句中输入以下条件:Like '*'+[請輸入關鍵字: 委託人]+'*'Like '*'&[請輸入關鍵字: 委託人]&'*'到底有什么区别。
       如果都输入参数的话,结果是一样的。但是,如果不输入参数,那么前者返回Null,也就是空集,而后者返回全部记录。问题来了:为什么?

       我开始怀疑,是不是用“+”连接符会忽略“*”呢?不输入时,当然是Null值了。Null是变量型数据,自然不是数值,那么加号还起作用吗?于是,便在群里跟大家一起研究了下,liwen认为,Null+任意变量=Null,换句话说,就是:
       Like '*'+Null+'*'=Like Null
       这样很好地解释了为什么不输入参数时返回空值的结果。但还有个问题,那为什么Like '*'&Null&'*'返回全部记录呢?因为用“&”时,Null强制返回""【空字符串】。也就是说:
       Like '*'&Null&'*'=Like '**'
       好,解释完毕了。现在可以来总结结论了:
       1、加号主要作为运算符来使用。因此当变量类型不匹配时就会出错,不信的话可以试试 Like "*"+ 30+"*" 看看能不能返回正确结果。
       2、 加号并非强制性连接符。这也就是小宝版主所说的,只有变量都是字符串时才作为连接符使用。因此当Null值与变量相加,就相当于皇帝穿了新装。
       3、&为强制性连接符,当变量为Null时,就强制性转换为""空字符串。
【新手入门】之一:If分支语句
【新手入门】之二:分支语句总结
【新手入门】之三:循环语句For
【新手入门】之四:循环语句Do和死循环
【新手入门】之五:公共变量与传址过程、传值过程
【新手入门】之六:“悲欢离合总无情”——浅谈Split和Join
【新手入门】之七:嵌套与并列——再谈If流程问题
【新手入门】之八:“连就连”——浅谈“&”和“+”连接符的区别

【新手入门】之九:从百钱百鸡谈起——浅谈“规划求解”兼答lingjiang问
【新手入门】之十:书到用时方恨少——自定义菜单(Access 2003)的制作
【新手入门】之十一:浅谈ADO之序言
【新手入门】之十二:浅谈ADO之Connection
【新手入门】之十三:浅谈ADO之Conmmand(上)
【新手入门】之十四:浅谈ADO之Command(下)
【新手入门】之十五:浅谈ADO之Recordset(上)
【新手入门】之十六:浅谈ADO之Recordset(下)
【新手入门】之十七:浅谈列表框的使用
【新手入门】之十八:双击列表框修改数据
【新手入门】之十九:从“书与女友恕不外借”谈起——浅谈“Bookmark”的使用
【新手入门】之二十:“书与书签”——bookmark属性答疑
【新手入门】之二十一:记录集的“凌迟”——逐条导出记录集

【新手进阶】之一:基础算法(一)
【新手进阶】之二:基础算法(二)
【新手进阶】之三:基础算法(三)
【新手进阶】之四:基础算法(四)
【新手进阶】之五:排序搜索(一)
【新手进阶】之六:排序搜索(二)
【新手进阶】之七:递归算法
【新手进阶】之八:冒泡排序
【新手进阶】之九:浅谈不绑定数据源操作记录
【新手进阶】之十:工作日的计算
【新手进阶】之十一:“庖丁解牛”和“纪昌学射”——浅谈表格式文本数据的导入
【新手进阶】之十二:从四脚腾空的奔马谈起——原来界面可以这样设计
【新手进阶】之十三:Outlook风格导航界面
【新手进阶】之十四:仓库管理系统


作者: tmtony    时间: 2013-3-4 14:28
收到

作者: smilingkiss    时间: 2013-3-4 16:14
明白了,辛苦roych了,谢谢啊版主^_^
作者: wang1950317    时间: 2013-3-5 09:11
受教!
作者: 你是坏蛋    时间: 2013-3-5 21:25
有道理,楼主的精神,赞一个。。。
作者: ycxchen    时间: 2013-3-6 09:09
通俗易懂,好!
作者: zhengjialon    时间: 2013-3-12 11:35
总结的好,我一般都是用时随便用,出错了再调试根本没总结过
作者: 微微森林    时间: 2013-3-28 21:15
将版主的各帖依次读完,有些不甚了了,因为工作的需要,刚从excel接触到Access,只有慢慢学习了。感觉版主发帖风格别具一格,技术帖子能够这样地娓娓道来,还真是不多,导语更是旁征博引,引人入胜啊。
作者: littlekey    时间: 2013-12-2 21:09
提个问题,如果想将&连接符作为字符显示呢?如何做到呢
作者: 轻风    时间: 2013-12-3 10:59
littlekey 发表于 2013-12-2 21:09
提个问题,如果想将&连接符作为字符显示呢?如何做到呢

放在引号里就是字符了
作者: littlekey    时间: 2013-12-3 12:08
轻风 发表于 2013-12-3 10:59
放在引号里就是字符了

可能我没有表述清楚,请看这个截图中红色箭头所指的地方

[attach]52781[/attach]

作者: littlekey    时间: 2013-12-3 22:55
轻风 发表于 2013-12-3 10:59
放在引号里就是字符了

已经解决了,谢谢
作者: dorenmi    时间: 2014-11-28 11:08
终于明白了,谢谢roych
作者: wuwu200222    时间: 2023-3-1 10:16
学习
作者: worryd1    时间: 2023-12-11 22:42
学习了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3