我正在尝试编写一个sql语句,使用以下语句切换数据库中varchar(5)列的值。
stmt = connection.prepareStatement("UPDATE TABLENAME SET
+ MIDNIGHT =IF\\\\(MIDNIGHT=?,?,?\\\\)");
stmt.setString(1, "off");
stmt.setString(2, "on");
stmt.setString(3, "off");
但是我收到以下错误:
com.ibm.db2.jcc.am.SqlSyntaxErrorException:DB2 SQL错误:SQLCODE = -7,SQLSTATE = 42601,SQLERRMC = \; GHT = IF,DRIVER = 3.59.81
MIDNIGHT是列的名称,我试图在“开启”和“关闭”之间切换。
我做错了什么?
答案 0 :(得分:1)
SQL0007N - 角色""以下""不是 有效的。
<强>解释强>
指定的&#34;&#34;不是SQL中的有效字符 声明。 &#34;&#34; field表示SQL的20个字符 在无效字符之前的语句。
联合系统用户:某些数据源不提供 适当的值为&#34;&#34;和&#34;&#34;消息令牌。 在这些情况下,&#34;&#34;和&#34;&#34;将有以下内容 格式:&#34;:UNKNOWN&#34;,表示实际值 指定的数据源未知。
无法处理该声明。
用户响应:
删除或替换无效的字符。
sqlcode:-7
sqlstate:42601
此外,在您的查询中,您不能通过在Java中使用的方式使用IF语句。
可能的解决方法是使用案例陈述。
update TABLENAME SET MIDNIGHT =
case when MIDNIGHT = ? then ?
when MIDNIGHT = ? then ?
end;