SQLite3 C++ "CASE"附近的查询:语法错误

SQLite3 C++ Query near "CASE": syntax error

本文关键字:查询 语法 错误 C++ CASE SQLite3      更新时间:2023-10-16

使用SQLite3 c++实现虽然我相信这个错误是更普遍的。我只是想写这样一个语句:

"如果'Players'表中不存在'lastPlayed'列,则ALTER表并将其添加到该表中"

这是我的查询:

    query = string("CASE WHEN COL_LENGTH('Players', 'lastPlayed') IS NULL ")
    +   " BEGIN "
    +   "ALTER TABLE Players "
    +   "ADD lastPlayed DATETIME DEFAULT now"
    +   " END "
    ;

错误:

near "CASE":语法错误

我在这里做错了什么?

您的CASE语句很好。错误在于COL_LENGTH不是SQLite中的内置函数。

你可以做什么来实现你的结果是删除CASE语句,并在你的代码,只是试图改变球员表,以添加一个lastplays列。然后将alter语句包装在try-catch块中。如果列已经存在,则抛出异常,否则表将被成功修改,您可以继续。

试试这个语法

CASE 
    WHEN expr THEN expr
    WHEN expr THEN expr
    .
    .
END
https://www.sqlite.org/lang_expr.html