如何使用SQL实现字段数据的模糊查询(100分)

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

cfm723

Unregistered / Unconfirmed
GUEST, unregistred user!
在DELPHI中,如对“姓名”字段进行查询,当输入“陈”时,能自动地将陈姓的所有记录列出来
但我这样做却不行:
with ldgldatamodule.adoquery3 do
begin
close;
sql.clear;
sql.add('select * from stock');
sql.add('where name '陈%' ');
open;
end.
我这样做却不行,为什么?如何做才行?
 
with ldgldatamodule.adoquery3 do
begin
close;
sql.clear;
sql.add('select * from stock');
sql.add('where name like '陈%' ');
open;
end.
 
应该是这样吧:
with ldgldatamodule.adoquery3 do
begin
close;
sql.clear;
sql.add('select * from stock');
sql.add('where name like ''陈%'' ');
open;
end.
 
、模式匹配符例:常用于模糊查找,它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。

可使用以下通配字符:

百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。

下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。

方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

例如:
限制以Publishing结尾,使用LIKE '%Publishing'

限制以A开头:LIKE '[A]%'

限制以A开头外:LIKE '[^A]%'

 
荷塘新月, 如果姓名为一输入框的值,那又应该如何写,是不是这样写:
sql.add('where name like ''edit1.text%'' ');
 
sql.add('where name like '+ edit1.text + '%''');
 
应该为:sql.add('where name like '''+edit1.text+'%'+'''');
我试过的
 
为什么是这样表达的?说明一下行吗?
 
hcbride,为什么是这样表达的?说明一下行吗?
 
我来解释给你听吧,要给分我啊。
SQL中如果要设定条件的,需要用单引号括着条件内容,如:select * from Table1 where ID='1';
而这个语句:
sql.add('where name like '''+edit1.text+'%'+'''');
其实也是这个意思
其在TQUERY的SQL也是这样:where name like ' edit1.text里面的内容';
而要在字符串实现产生单引号,需要两个'',如字符串:
I LOVE 'U';
'I LOVE'+''''+'U'+'''';
 
多人接受答案了。
 
后退
顶部