有谁知道存储过程中LIKE用法的!(100分)

  • 主题发起人 主题发起人 vip1977
  • 开始时间 开始时间
V

vip1977

Unregistered / Unconfirmed
GUEST, unregistred user!
我在存储过程中写到
declare sqlstr varchar(200)
sqlstr:='select * from'+@tablename+'where '+sqlstr
execsql;
我在adoquery中调用要用到like;
例如:id like '%edit1.text%'调试的半天,还是没有解决。
我是这么写的:
var sqlstr:string;
sqlstr:='1<>0';
sqlstr:=sqlstr+'and id like '%edit1.text%';
 
sqlstr:=sqlstr+'and id like '''%' + edit1.text+'%''';
 
楼上肯定不行,'为九个,起码不配对,我就不调试了!
 
最后少了一个引号而已嘛,我觉得没什么问题
 
sqlstr:=sqlstr+'and id like '+chr(39)+'%' + edit1.text+'%'+chr(39);
 
呵呵, 多写了一个...

sqlstr:=sqlstr+'and id like ''%' + edit1.text+'%''';
 
我在query analyzer中测试的时候,如果是',测试不通过!
一定要是",不知道是什么原因,上面各位都测试过了,不行!
另外提醒一下smallbs:用chr(39)干什么!
 
有的数据库如ACCESS 97 不支持字符转义用法,chr(39)能解决这个问题,就是这样
你用的SQLSVR,看错了,抱歉 [:)]
 
告诉大家,我用的是DELPHI5,SQL7,XP,IBMT30
 
sqlstr:=sqlstr+'and id like format('''%s''',['%' + edit1.text+'%']);
 
大家帮帮忙,测试一下,怎么一个都通不过,应该不是很难的题目,
怎么都答的有问题呢?
 
用引号:
sqlstr:=sqlstr+'and id like ''%'+edit1.text+'''%';

不用引号:
sqlstr:=sqlstr+'and id like %'+edit1.text+'%';
要注意其中的空格。
 
我在EDIT1里填了1
怎么提示incorrect syntax near '1'
我用SHOWMESSAGE(SQLSTR)
看了一下是 1<>0 AND ID LIKE %1%,
好象要填两边要添',才可以!大概希望在既了!
 
改成: trim(edit1.text)
 
你的ID如果是整型变量,不能这么做,like 应该是支持字符串

如果那样做一下转换:

cast(id as char)
 
关键是我的ID是VARCHAR类型的,是否也要转换呢?
我在QUERY ANALYZER中测试时要这样才能通过:
sqlstr:=sqlstr+'and id like “%123%”';
双引号,看见了吗?

 
我在QUERY ANALYZER中只有这样写才能通过:
SQLSTR:='1<>0' AND 'ID LIKE "%123%"'
不信你试试看。
如果
SQLSTR:='1<>0' AND 'ID LIKE '%123%''
肯定报错!

 
sqlstr:=sqlstr+'and id like '%edit1.text%';
改成:
sqlstr:=sqlstr+'and id like '''+%edit1.text+'''';
 
为什么不试试用",呢?你不是在QUERYANALYZER!中用“可以通过!
 

Similar threads

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