2011-02-14 84 views
0
SELECT MAX(sm_version) AS version_latest, 
     user_type  AS role_performed 
FROM usage_database 
WHERE user_id LIKE ('"+%eid_upper+"') 
     OR user_id LIKE ('"+eid_lower+"') 
GROUP BY user_type 

这是我的查询。我已经设计了数据库,使得我必须在查询中输入%。如果我在SQL开发人员上执行此查询,那么它工作正常。但是,当我在Java代码中执行这里面我把JSP文件,那么它就会出现以下错误:在SQL查询中使用%

令牌“%”

语法错误,无效的表达

什么我做错了,我该如何解决它?

+6

DON“T使用字符串连接构建查询! – 2011-02-14 04:58:48

回答

0

我不好用JSP,但如果你想使用它作为一个SQL通配符不应该%是查询字符串的一部分?即

WHERE user_id LIKE ('%"+eid_upper+"') 

编辑:关于SQL注入的常见评论,yada yada yada

+0

@ user563577这个答案不首先,弗雷德第一,第二,答案是可怕的 – Phil 2011-02-14 05:38:33

+0

布朗:你可以删除它,也许甚至有一个徽章(删除接受的答案);-) – Thilo 2011-02-15 01:24:46

4
WHERE user_id LIKE ('%"+eid_upper+"') 
+0

只有OP可以改变公认的答案。你必须等到他回来(如果他不)。 – 2011-02-27 19:46:10

1

使用预处理语句和绑定变量!

where user_id like ('%' || ?)