SQL查询语句——困惑

cokegirl 2000-06-02 04:22:00
我在Query中写SQL语句如下:
Query1.SQL.Text := 'SELECT * FROM aTable WHERE aField IN (''a'',''b'')';
执行结果正确;
但是,如果把语句写为:
SQLString := '''a'',''b'')';
Query1.SQL.Text := 'SELECT * FROM aTable WHERE aField IN (' +
SQLString + ')';
执行没有异常,但是结果不正确,结果只相当于SQL语句中 IN(''a'') 的结果;

请教各位高手,这是怎么回事呢?

...全文
270 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
skt642 2001-05-31
  • 打赏
  • 举报
回复
83898关注!
wai_lf 2000-06-28
  • 打赏
  • 举报
回复
你把SQLstring代入语句看看结果如下:
select * from aTable where aField IN (''d''.''b''))
知道原因了吧!!!关键是你没把'处理好,
正确的SQLstring:=''a','b'';
你再看看,好象你的句子里有两个')';
引号的原则是:单引号在字符串中用''表示,
但是既然SQLstring已经是字符串那么你的SQLstring赋值,就错了。
试试看,不行再找我。
Un1 2000-06-06
  • 打赏
  • 举报
回复
查看两种情况下 Query1.SQL.Text 被赋值以后有什么不同?!
supershan 2000-06-06
  • 打赏
  • 举报
回复
你可以改为:
SqlString:='(''a'',''b'')';
Query1.SQL.Text := 'SELECT * FROM aTable WHERE aField IN '+SQLString;
cokegirl 2000-06-05
  • 打赏
  • 举报
回复
Sorry,由于我的一时疏忽,第二个SQL语句中多了半个括号')',实际上是没有的。

还需请教各位,我再把这个SQL语句写入到存储过程(Oracle)中后,就出现了,直接写入可以,传参数不可以的问题,这是怎么回事呢?
zyc 2000-06-02
  • 打赏
  • 举报
回复
请详细看两个的差别:
第一个是:
Query1.SQL.Text := 'SELECT * FROM aTable WHERE aField IN (''a'',''b'')';
第二个是:(替代后)
Query1.SQL.Text := 'SELECT * FROM aTable WHERE aField IN (''a'',''b''))'
你先改正后试试再说吧。
蝈蝈俊 2000-06-02
  • 打赏
  • 举报
回复
就是用SQL Monitor 跟踪一下
halfdream 2000-06-02
  • 打赏
  • 举报
回复
SQLString := '''a'',''b'')';
~~~~~~~~\这儿的括号好象有问题。

这样吧,
你在其中加一句
ShewMessage(Query1.SQL.Text);
仔细看看SQL语句有没有问题。

也可以用SQL Monitor 跟踪一下。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧