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

标签 java sql jdbc derby

我想问一下如何在SQL中实现这样的东西

String updateUserDocs1 = "UPDATE USERDOCS SET VIEW_DOCS = VIEW_DOCS + ' ' + ? WHERE USER_ID = ?";

它返回一个 java sql 语法错误。遇到:第 1 行的“WHERE”

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

最佳答案

许多 SQL 方言支持用于字符串连接的 + 运算符重载,但 ANSI SQL 标准字符串连接运算符是 ||

对于 Derby,代码

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

导致以下错误

java.sql.SQLSyntaxErrorException: The '+' operator with a left operand type of 'VARCHAR' and a right operand type of 'CHAR' is not supported.

但是,

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

工作正常。

关于java - 在参数化查询中使用加号连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49214257/

相关文章:

java - 如何创建读取制表符分隔文件的通用进程,并从中返回通用 Map

java - SOLR 会占用服务器大量内存吗?

sql - PostgreSQL 中的条件语句

java - DB2 SQL 错误 : SQLCODE=-204, SQLSTATE=42704

java - JDBC 连接意外变为空

java - 如何从 Java 程序在 Linux 中打开另一个命令行应用程序?

java - 如何解决java9中的模块读取包错误

java - 将基于 EMF/GMF 的 eclipse 3 插件迁移到 RCP

具有动态生成列和聚合函数的 SQL Pivot