这是我要向存储过程传递的条件b.shenhe=1 and b.ispay=0 and b.baohuoren like 'abc%',但是程序报错 “字符串 'ab)' 后的引号不完整。
'ab)' 附近有语法错误。
字符串 'ab) order by b.datetime desc' 后的引号不完整。
'ab) order by b.datetime desc' 附近有语法错误。”这是为什么?
我把like换成='abc'是不会出错的
我发现添加or也会出现问题,在数据库可以执行,就是程序给向数据库存储过程传值出错
字符串拼接的不对啊
能说的详细点吗?单引号下面是字符串可以,但是加上%就会出错
你换成 like '%abc%' 也不回出错的
会
1.调试看生成的sql有没有问题
2.用sql profile监控执行的sql是什么样的
你的存储过程有问题呗,你把存储过程贴出来也许能帮上你
你调试的时候,有了完整的sql语句,然后放到数据库中执行,
或者你可以把你的sql语句贴到这边来,大家看看
应该不是like和%的问题,建议你只保留where语句,然后测试一下,尽量排除其他因素……
再有一点,你是用的是什么数据库,查看一下该数据库对like和%有没有什么特殊的使用要求……
like的运用场合主要在模糊查询的时候,一般以查询字符串居多,这里据一些例子来说他的一般用法:
例1,查询name字段中包含有“明”字的。
select * from table1 where name like '%明%'
这里不要使用*来代替,一般在使用0个或者任意个字符构成的字符串的时候最好使用%
不过在首或尾使用可以相互替换,如果在头尾同时使用的话,就必须要使用%
例2,查询name字段中以“李”字开头。
select * from table1 where name like '李*'
或者
select * from table1 where name like '李%'
例3,查询name字段中含有数字的。
select * from table1 where name like '%[0-9]%'
例4,查询name字段中含有小写字母的。
select * from table1 where name like '%[a-z]%'
例5,查询name字段中不含有数字的。
select * from table1 where name like '%[!0-9]%'