在参数化查询中使用加号连接字符串

时间:2018-03-10 21:33:05

标签: java sql jdbc derby

我想问一下如何在SQL

中实现这样的东西
String updateUserDocs1 = "UPDATE USERDOCS SET VIEW_DOCS = VIEW_DOCS + ' ' + ? WHERE USER_ID = ?";

它返回java sql语法错误。遇到了:" WHERE"在第1行

该陈述似乎在语法上是正确的。可能是什么问题?

1 个答案:

答案 0 :(得分:1)

许多SQL方言支持+运算符重载以进行字符串连接,但ANSI SQL标准字符串连接运算符为||

使用Derby,代码

sql = "UPDATE USERDOCS SET VIEW_DOCS = VIEW_DOCS + ' ' + ? WHERE USER_ID = ?";
PreparedStatement ps = conn.prepareStatement(sql);

导致以下错误

  

java.sql.SQLSyntaxErrorException:不支持左操作数类型为“VARCHAR”且右操作数类型为“CHAR”的“+”运算符。

然而,

sql = "UPDATE USERDOCS SET VIEW_DOCS = VIEW_DOCS || ' ' || ? WHERE USER_ID = ?";
PreparedStatement ps = conn.prepareStatement(sql);

正常工作。