奇怪的问题,望高人指点

liuxing19870 2010-10-25 04:53:51
exec AdvanceSearch ' where p.Status = 1 and  (  ( p.ProductID like ''%护肤%''
or p.ProductName like ''%护肤%''
or p.ProductWebName like ''%护肤%''
or p.Keywords like ''%护肤%''
or m.BrandName like ''%护肤%''
or c3.C3Name like ''%护肤%'' ) or ( p.ProductID like ''%美白%''
or p.ProductName like ''%美白%''
or p.ProductWebName like ''%美白%''
or p.Keywords like ''%美白%''
or m.BrandName like ''%美白%''
or c3.C3Name like ''%美白%'' )) and 1 = 1 and 1 = 1 and c2.SysNo = 9',' Order by pe.isstockout',12,0

报错
消息 102,级别 15,状态 1,第 26 行
'and' 附近有语法错误。
注:这里的26行就是or c3.C3Name like ''%美白%'' )) and 1 = 1 and 1 = 1 and c2.SysNo =这行
如果把and 1 = 1去掉一个就不会有问题了,或者把这一行前面的空格全部去掉就不会有问题了,去掉之后如下
exec AdvanceSearch ' where p.Status = 1 and  (  ( p.ProductID like ''%护肤%''
or p.ProductName like ''%护肤%''
or p.ProductWebName like ''%护肤%''
or p.Keywords like ''%护肤%''
or m.BrandName like ''%护肤%''
or c3.C3Name like ''%护肤%'' ) or ( p.ProductID like ''%美白%''
or p.ProductName like ''%美白%''
or p.ProductWebName like ''%美白%''
or p.Keywords like ''%美白%''
or m.BrandName like ''%美白%''
or c3.C3Name like ''%美白%'' )) and 1 = 1 and 1 = 1 and c2.SysNo = 9',' Order by pe.isstockout',12,0

,很是奇怪,
参数是在存储过程里拼接sql语句执行的条件
...全文
124 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxing19870 2010-10-25
  • 打赏
  • 举报
回复
问题解决,是存储过程的参数太短,我晕死,麻烦各位了
abuying 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 liuxing19870 的回复:]

继续等,要下班了啊!望高手解答
[/Quote]
请执行的sql贴出来!
liuxing19870 2010-10-25
  • 打赏
  • 举报
回复
继续等,要下班了啊!望高手解答
liuxing19870 2010-10-25
  • 打赏
  • 举报
回复
多谢各位的回答,还是不知道为什么。
liuxing19870 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 abuying 的回复:]
两个 1=1,是不是多余了,还是你动态拼接过来的。
你把版式排得很好,同时也把SQL加长了。
把你的sql先输出,print @sql.
是不是把结尾删除部分?
注意空格,tab也算一个字符的
[/Quote]
是动态拼接起来的,加tab应该不会有问题吧,我以前都是加tab的,其实sql多几个tab的话长了几个字符应该对性能不会有影响的吧,我很奇怪为什么会这样,搞不清楚原因心里很不舒服。
abuying 2010-10-25
  • 打赏
  • 举报
回复
两个 1=1,是不是多余了,还是你动态拼接过来的。
你把版式排得很好,同时也把SQL加长了。
把你的sql先输出,print @sql.
是不是把结尾删除部分?
注意空格,tab也算一个字符的
dawugui 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liuxing19870 的回复:]
消息 102,级别 15,状态 1,第 34 行
')' 附近有语法错误。[/Quote]五楼是告诉你那里好象少了个扩号,你不能完全照般.

exec AdvanceSearch 
' where p.Status = 1 and
(
(
p.ProductID like ''%护肤%''
or p.ProductName like ''%护肤%''
or p.ProductWebName like ''%护肤%''
or p.Keywords like ''%护肤%''
or m.BrandName like ''%护肤%''
or c3.C3Name like ''%护肤%''
) or
(
p.ProductID like ''%美白%''
or p.ProductName like ''%美白%''
or p.ProductWebName like ''%美白%''
or p.Keywords like ''%美白%''
or m.BrandName like ''%美白%''
or c3.C3Name like ''%美白%'' )
)
)
and 1 = 1 and 1 = 1 and c2.SysNo = 9 ' ,
' Order by pe.isstockout',
12,
0
claro 2010-10-25
  • 打赏
  • 举报
回复
再仔细看看。
liuxing19870 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dawugui 的回复:]
SQL code
exec AdvanceSearch
' where p.Status = 1 and
(
(
p.ProductID like ''%护肤%''
or p.ProductName like ''%护肤%''
or p.ProductWebName like ''%护肤%''
or p.Keywords like ''%护肤%''
or m.Bra……
[/Quote]
消息 102,级别 15,状态 1,第 34 行
')' 附近有语法错误。
liuxing19870 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 claro 的回复:]
1=1有一个返回真就OK,两个做什么?

空格是中文的吧。
[/Quote]
因为这个条件是程序生成的,当程序里全部不满足的时候我就加上1=1,不然前面的and就多出来了,我觉得1=1多加也不会有这个问题啊,空格我全部换成tab了还是没用
dawugui 2010-10-25
  • 打赏
  • 举报
回复
exec AdvanceSearch 
' where p.Status = 1 and
(
(
p.ProductID like ''%护肤%''
or p.ProductName like ''%护肤%''
or p.ProductWebName like ''%护肤%''
or p.Keywords like ''%护肤%''
or m.BrandName like ''%护肤%''
or c3.C3Name like ''%护肤%''
) or
(
p.ProductID like ''%美白%''
or p.ProductName like ''%美白%''
or p.ProductWebName like ''%美白%''
or p.Keywords like ''%美白%''
or m.BrandName like ''%美白%''
or c3.C3Name like ''%美白%'' )
)
) --貌似这里少了个 )
and 1 = 1 and 1 = 1 and c2.SysNo = 9 ' ,
' Order by pe.isstockout',
12,
0
fpzgm 2010-10-25
  • 打赏
  • 举报
回复
没看见区别。。
liuxing19870 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
少了空格的原因吧?
[/Quote]
这个我觉得不是少空格的原因吧,我很奇怪sqlserver为什么会这样,我把前面空的内容去掉它就没错了,很是纳闷
claro 2010-10-25
  • 打赏
  • 举报
回复
1=1有一个返回真就OK,两个做什么?

空格是中文的吧。
dawugui 2010-10-25
  • 打赏
  • 举报
回复
少了空格的原因吧?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧