关于SQL传递参数的问题,很怪!!(50分)

  • 主题发起人 主题发起人 fan_7
  • 开始时间 开始时间
F

fan_7

Unregistered / Unconfirmed
GUEST, unregistred user!
interbase + win98 + delphi 3.0 下:


sql.add( 'select * from table where name like :pName');
params[0].asstring ;= sname + '%';
open;

数据库中 字段 name 的长度为4
当length(sname)>2 时,出错!(好象是:数学异常,数字益出或字符串截断)
当length(sname)=2 时,成功!
百思不解,请教了!

 
You can try to update your BDE.
 
how to do ?
 
我以前也有过这样的经历,当参数为2个获2个以上的汉语时,出错。
但英文没有事,后来我发现参数传过后,长度总减少了1,我只好在后面
加多个“%”,问题才解决。
 
to yushaofei:
怎么修改 BDE

 
附加功能 将问题提前
 
利用'like'的模糊查询
 
到Inprise的官方网站下载新版的BDE安装就行了.
 
是汉字还是E文?
 
to gcq:
是汉字
 
>>sql.add( 'select * from table where name like :pName');
>>params[0].asstring ;= sname + '%';
>>open;

sql.text:='select * from table where name like '+
+''''+ sname + '%'+'''';
open;

关键是''''代表一个'

 
或者:
sql.add( 'select * from table where name like '+''''+' :pName'+'''');
params[0].asstring ;= sname + '%';
open;

try it?
 
老兄,一个汉字的长度似乎是2!
你的字段长度为4,大概只能存2个!
 
这种现象应该与你的字段长度有关!
select * from table1 where field1 like 'xx%'
语句中xx可以是任意字符,只要字节长度不大于字段长度就可以!
你用汉字的话,每个汉字的长度好象是1,而字节长度是2,你可以试一试用4个英文字母来
代替,看是不是仍然出现问题!
 
多人接受答案了。
 
后退
顶部