ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2870|回复: 10

sql 的一个新的发现

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-9-4 19:34 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:ADO技术

sql 在进行逻辑判断是返回的值不是0,1 而是0,-1,条件成立则为-1,不成立则为 0,呵呵,不知有没有人发现过

如 Sql = " select  1=1  from [sheet1$a1:c8] " 返回值都是 -1

Sql = " select  2=1  from [sheet1$a1:c8] " 返回值都是 0

假设表格如下

aa   bb  cc

1      1      1

1       1      2

2        4     7

2        4      4

2       5       2

查找aa,bb 相同记录,普通写法:

Sql = " select * from [sheet1$a1:c8] where aa=bb "

也可以 Sql = " select * from [sheet1$a1:c8] where (aa=bb)=-1

查找aa,bb 不相同记录,普通写法:

Sql = " select * from [sheet1$a1:c8] where aa<>bb "

也可以 Sql = " select * from [sheet1$a1:c8] where (aa=bb)=0

查找aa,bb ,cc 全相同记录,普通写法:

Sql = " select * from [sheet1$a1:c8] where aa=bb and aa=cc "

新写法

Sql =Sql = " select * from [sheet1$a1:c8] where (aa=bb)*(aa=cc)<>0 "

查找aa=bb  或 bb=cc     但不包含 aa=bb=cc 的  相同记录,普通写法:

Sql = " select * from [sheet1$a1:c8] where (aa=bb and bb<>cc ) or (bb=cc and aa<>cc)   "

新写法

Sql = " select * from [sheet1$a1:c8] where (aa=bb)+(bb=cc)=-1 "

如果aa=bb 则aa的值减去1 ,普通写法:

Sql = " select iif(aa=bb,aa-1,aa) from [sheet1$a1:c8] "

新写法

Sql = " select aa+(aa=bb) from [sheet1$a1:c8]  "

这种写法在逻辑比较复杂是应该有实用效果

[此贴子已经被作者于2008-9-4 19:46:01编辑过]

TA的精华主题

TA的得分主题

发表于 2008-9-4 19:47 | 显示全部楼层

呵呵 有啊 和VBA里一样。

反过来 , sql 把 0 当作 false 

非 0 都当作true

TA的精华主题

TA的得分主题

发表于 2008-9-4 19:51 | 显示全部楼层

 Sql = " select  *  from [sheet1$a1:c8] where 0"

返回一个空的记录集

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-9-4 20:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用ldy在2008-9-4 19:47:00的发言:

呵呵 有啊 和VBA里一样。

反过来 , sql 把 0 当作 false 

非 0 都当作true

sql应该只是把-1当作true吧,

Sql = " select *  from [sheet1$a1:c8] where (aa=bb)=1" 返回的也是空

TA的精华主题

TA的得分主题

发表于 2008-9-4 20:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

应该是 sql 把 true 当 -1 , 把 单独的 非0 值 当做 true

Sql = " select  *  from [sheet1$a1:c8] where 0"

Sql = " select  *  from [sheet1$a1:c8] where 1111"

这两个 一个返回空记录 ,一个返回全记录

TA的精华主题

TA的得分主题

发表于 2008-9-9 16:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好!

TA的精华主题

TA的得分主题

发表于 2008-9-9 17:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不错

TA的精华主题

TA的得分主题

发表于 2008-9-9 17:34 | 显示全部楼层

几乎所有的语言都是将TRUE与FALSE定义为0与非0(或非0与0)

TA的精华主题

TA的得分主题

发表于 2009-3-19 02:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位努力就有希望呀,让我们一起来吧!

TA的精华主题

TA的得分主题

发表于 2009-3-19 07:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ado中好像也是这样的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-7 17:44 , Processed in 0.038240 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表