社区
数据库及相关技术
帖子详情
bcb 中 sql语句问题
ayane
2003-10-21 11:29:25
怎么在SQL中做数值型变量的比较
我用的是ADOQuery
比如说
int ks=5;
……
ADOQuery1->Sql->Add("select * from table where 最大开数>=ks and 最小开数<=ks ")
……
得到的返回值为0
这只是一个简单例子
请大家指点一下
...全文
62
17
打赏
收藏
bcb 中 sql语句问题
怎么在SQL中做数值型变量的比较 我用的是ADOQuery 比如说 int ks=5; …… ADOQuery1->Sql->Add("select * from table where 最大开数>=ks and 最小开数<=ks ") …… 得到的返回值为0 这只是一个简单例子 请大家指点一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
heguxun
2003-11-03
打赏
举报
回复
如果你的字段“最大开数" 和 “最小开数”是整形的话,sql应这样写:
ADOQuery1 -> SQL -> Add("select * from table where 最大开数>="+ks+" and 最小开数<="+ks);
ayane
2003-10-31
打赏
举报
回复
我都试过了
可还是不行
是不是用中文字段的问题呀!!
或是还有什么我漏掉了
wt_sanlian
2003-10-22
打赏
举报
回复
用下面的方法赋值更直观.
AnsiString SQL;
int ks = 5;
SQL.sprintf("select * from table where 最大开数>=%d and 最小开数<=%d ",ks,ks);
ADOQuery1 -> SQL -> Clear();
ADOQuery1 -> SQL -> Add(SQL);
ADOQuery1 -> Open();
cfchhx
2003-10-22
打赏
举报
回复
同意 huangjuliang(学习,学习,再学习!)的解释。
中文代码容易出现一些莫名其妙的错,而且中文写代码时累不累啊。
ayane
2003-10-22
打赏
举报
回复
其实我程序里ks也是一个ADOQuery查询后返回值,干脆直接让他返回字符串不一样么
ADOQuery1->Sql->Add("select * from table
where 最大开数>='"+ADOQuery2->FieldByName("开数")->AsString+"'
and 最小开数<='"+ADOQuery2->FieldByName("开数")->AsString+"'");
可我试了不行
先返回整形再用IntToStr转也不行
请大家在分析一下啦
ayane
2003-10-22
打赏
举报
回复
这种方法也行么
我去试试
顶一下
huangjuliang
2003-10-21
打赏
举报
回复
不过上面的最大开数和最小开数为中文
不知这样写还有什么
ADOQuery1->Sql->Add("select * from table where 最大开数>="+IntToStr(ks)+" and 最小开数<="+IntToStr(ks));
最好不要用中文!
huangjuliang
2003-10-21
打赏
举报
回复
ADOQuery1->Sql->Add("select * from table where 最大开数>=ks and 最小开数<=ks ")
这句话有错!
在这里ks就当然字符为处理了!
应当这样写:
ADOQuery1->Sql->Add("select * from table where 最大开数>="+IntToStr(ks)+" and 最小开数<="+IntToStr(ks));
这样应当没有问题
ayane
2003-10-21
打赏
举报
回复
不是啊
能满足条件的
By The Way
ADOCommand和ADOQuery用法一样么
有什么不相同的
我一般都是用来处理SQL的
bittertia
2003-10-21
打赏
举报
回复
我很少用过ADOQuery,大部分用的还是ADOCommand。我觉得如果处理SQL语句比较多的话还是用ADOCommand方便,不需要像ADOTable和ADOQuery一样得经常打开和关闭。
你这里提到的问题,可能是在表中没有满足条件的数据。
bittertia
2003-10-21
打赏
举报
回复
使用ADOCommand比ADOTable和ADOQuery方便是指在的执行过程中不需要相看库的表,只是关心执行是否成功。比如:一个文件中记录的全是SQL语句,并且这些SQL语句是对不同的表进行操作的。这样我就愿意用ADOCommand而不是ADOQuery。
huangjuliang
2003-10-21
打赏
举报
回复
To niuzhenjun(还得学呀)
你的有错,
假如ks=100;
这样就变成条件变为
where 最大开数>='100'
这是不对的!
实际带变量的SQL语句,实际上就是字符串的联结!
chenyubang
2003-10-21
打赏
举报
回复
ADOQuery1->Sql->Add("select * from table where 最大开数>="+IntToStr(ks)+
" and 最小开数<="+IntToStr(ks));
对变量需要用IntToStr()来转换,然后用+连接使用
niuzhenjun
2003-10-21
打赏
举报
回复
错了,少了一个"
ADOQuery1->Sql->Add("select * from table where 最大开数>='" + IntToStr(ks) + "' and 最小开数<='" + IntToStr(ks) "')";
niuzhenjun
2003-10-21
打赏
举报
回复
huangjuliang(学习,学习,再学习!)的正确,并不象楼主所说的变成了字符串比较,原因如下:
1.IntToStr()只是用来构造sql语句,并没有改变数字的类型,sql语句要求是字符串相加,所以必须转换。
2.字符串比较必须在变量两侧加上单引号'。而你这里不需要。
ADOQuery1->Sql->Add("select * from table where 最大开数>='" + IntToStr(ks) + "' and 最小开数<='" + IntToStr(ks) "');
niuzhenjun
2003-10-21
打赏
举报
回复
同意 huangjuliang(学习,学习,再学习!)的解释,完全正确。
ayane
2003-10-21
打赏
举报
回复
请问用中文有不好的地方么
我表里的字段名就都是中文
觉得很容易看
请细说说好么???
而且将KS转换成字符后是不是就变成字符串的比较了
那就5>14了吧
我去试试的说
Delphi adoquery处理多条
SQL语句
Delphi adoquery处理多条
SQL语句
BCB
讲座第十六讲简单数据库编辑操作
BCB
讲座第十六讲简单数据库编辑操作.上一讲我们学习了利用Query1控件和
SQL语句
实现简单数据库查询的方法,在本讲
中
,我们将要学习如何利用Table1控件来实现添加、修改、删除记录等数据库编辑操作。
BCB
简单的数据库管理
简单的数据库管理类似文件管理器界面,用户,用户权限,表的管理,支持
SQL语句
,
BCB
——学生信息查询
源代码……包含sql查询、更新、插入 删除等功能。 愿与大家分享!!
Direct Oracle Access v4.1.3
bcb
6
可扩展的脚本语言遵循基本的SQL*Plus语法,并支持所有
SQL语句
。除此,该语言还支持变量置换,从而令您的脚本可定制。 高级队列 ——TOracleQueue组件可以重发利用Oracle8的高级队列选项。该组件封装了DBMS_AQ包的...
数据库及相关技术
1,178
社区成员
18,939
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章