代码之家  ›  专栏  ›  技术社区  ›  Gacek

在Matlab中创建SQL查询时,为什么会出现此错误?

  •  2
  • Gacek  · 技术社区  · 16 年前

    我正在尝试将一些数据从matlab导出到数据库。我通过ODBC使用PostgreSQL数据库,如下所示。首先,我创建连接:

    dbConn = database('PostgreSQL30', username,password); 
    

    如果我尝试手动执行一些测试插入,一切看起来都很好:

    exec( dbConn, 'insert into test(std) values(2.2)')
    

    当我尝试动态生成一些短查询时,一切看起来仍然很好:

    q = sprintf('insert into test(std) values(%2.2f)', 12.345);
    res = exec(dbConn, q);
    

    但是当我尝试生成包含字符串的查询时,我会得到一个错误:

    >> q = sprintf('insert into test(name) values("%s")', 'xxx')
    
    q =
    
    insert into test(name) values("xxx")
    
    >> res = exec(dbConn, q);
    >> res.Message
    ans =
    
    ERROR: column "xxx" does not exist;
    Error while executing the query
    

    如果我用的话没有区别 "%s" 格式或普通 %s .问题出在哪里?

    编辑

    好的,我用错了引号。当我使用:

    q = sprintf('insert into test(name) values(''%s'')', 'xxx')
    

    一切正常。因此问题可以关闭/删除。抱歉打扰你了。

    1 回复  |  直到 16 年前
        1
  •  4
  •   gnovice    16 年前

    你试过用单引号吗?

    >> q = sprintf('insert into test(name) values(''%s'')', 'xxx')
    
    q =
    
    insert into test(name) values('xxx')