SQL查询语句中参数写法一问 ( 积分: 30 )

  • 主题发起人 主题发起人 ntjrr
  • 开始时间 开始时间
N

ntjrr

Unregistered / Unconfirmed
GUEST, unregistred user!
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from 表 where 字段A='''+edit1.Text+'''');
adoquery1.Open;
请问前辈,字段A如果为字符数据类型的话是以上的写法,如果是数字类型的话是否应写成
adoquery1.SQL.Add('select * from 表 where 字段A='+edit1.Text);?如果还是按上表中那样写我看好象也能正常执行的,字段A='+edit1.Text到底和上面的字段A='''+edit1.Text+''''有什么重要区别之处呢?
 
在查询分析器中,如果字段A是字符型,应该写成:
select * from 表 where 字段A='1000'
如果字段A是数值型,应该写成:
select * from 表 where 字段A=1000
在 Delphi 中把 SQL 语句写在字符串中,单引号用连续两个单引号表示,所以
select * from 表 where 字段A='1000' 写成:
'select * from 表 where 字段A=''1000'''
如果用变量,就应该写成:
'select * from 表 where 字段A='''+edit1.Text+''''
而select * from 表 where 字段A=1000 写成
'select * from 表 where 字段A=1000'即可
如果用变量,就应该写成:
'select * from 表 where 字段A='+edit1.Text
 
如果是数字型的也写成字段A='''+edit1.Text+''''会有什么不良后果?我在测试时好象一样能正常运行?
如果用ADOQuery1.Parameters.ParamByName('ABC').Value :=edit1.text 那么数字和字符字段有没有不同的写法呢?
 
这要看数据库特性,如果数值型在查询分析器中允许写成:
select * from 表 where 字段A='1000'
则在 Delphi 中也允许写成:
'select * from 表 where 字段A='''+edit1.Text+''''
 
前辈,根据您的指点我试了下,确实在ACCESS中数字型的只能写成字段A='+edit1.Text,在SQL数据库中就可以两者通用,是否就意味着在SQL中用字段A='+edit1.Text和字段A='''+edit1.Text+'''' 是完全等同,不会在任何情况下有异常发生的?
 
要看数据库特性,一般情况下,根据我经验,只要数据库允许,就没问题,结果是等同的.
 
接受答案了.
 
后退
顶部