Oracle8.04+Delphi5 SQl里Where子句为何要包含空格?(100分)

  • 主题发起人 主题发起人 chenha
  • 开始时间 开始时间
C

chenha

Unregistered / Unconfirmed
GUEST, unregistred user!

环境:Oracle8.04+Delphi5
我在Delphi写的SQL如:
query1.sql.add(SELECT * FROM Table where Name=:name)
query1.params[0]='SQL ' 可以找到记录
但用
query1.params[0]='SQL' 找不到记录,其中Name类型为Char
请高手指点!!!
 
SQL7.0 query1.params[0]='SQL'+'%';
 
Name类型为Char
当CHAR类型时如果输入小于定义长度,则ORACLE自动在后面加空格补足位数
用VARCHAR2没有这个问题
 
arm 说的对
 
你写的语句错误百出,应写成下面的形式:

query1.sql.add('SELECT * FROM Table where Name=:name');
query1.params[0].asstring:='SQL';
query1.open;
 
arm:
*Name类型为Char
*当CHAR类型时如果输入小于定义长度,则ORACLE自动在后面加空格补足位数
*用VARCHAR2没有这个问题

如你所说,仅是SQL加参数时有问题,
但这样写就没事
query1.sql.add('SELECT * FROM Table where Name='SQL' ),请问我有什么好的办法?因为
不能为此把Table 的字段name由Char改为Varchar2.

 
我建议你用函数,用SQL语句时,将name字段的击路两边清空,在oracle中用左清空或有清空
rtrim/ltrim/trim
就行了!!!
其实我觉得,最好还是修改表,你当时健表示也没考虑到name是几位,既然用了char,name字符长度应该是
固定的!!!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
741
import
I
后退
顶部