关于Tquery的问题!(20分)

  • 主题发起人 主题发起人 hmFeng
  • 开始时间 开始时间
H

hmFeng

Unregistered / Unconfirmed
GUEST, unregistred user!

SQL.Add('select * from xian.db where XM like %:xm%');
ParamByName('xm').AsString := xm;

有错误! 请问应该怎么写带参数的 like 查询语句!请指教!
 
请把%:xm%用双引号括起来:
SQL.Add('Select * from xian.db where XM like "%:xm%"');

 
将字段的值用引号括起来!
顺便提醒一下,在Delphi中要输出单引号(')要使用两个单引号('')
 
Infernal Goddess,你好,我用你的方法运行程序时出现 "parameter 'xm' not found"的
错误信息,请指教!
 
用以下语句:
SQL.Add('Select * from xian.db where XM like ''%:xm%''');
 
(1) SQL语句中,两个单引号可以代表字符串中的一个单引号,一个双引号也可以代表字符
串中的一个单引号。显然,双引号只要写一个,而且好认,不会形成一片单引号,所以建议
用单引号括在字符串外面,里面用双引号代表字符串内部的引号。

(2) hmFeng,我明白你的意思了。
'Select * from xian.db where XM like "%:xm%" 的功能是在 xian.db 中提取 XM 字段
中包含 :xm 字符串的记录,记住,这是一个不变的包含3个字母的字符串。

你的意思是:xm作为一个SQL语句的一个参数,而上面的语句根本就没有参数,当然会出错
了。你可以这样写:
SQL.Add(''Select * from xian.db where XM like :xm');
ParamByName('xm').AsString := '%' + xm + '%'; // xm 应该是你要找的子串变量吧
Active := True;

 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部