我正在使用SQLite3 in .cpp
,我正在使用std::map<std::string, special_variant_type>
来存储行。一切都很好,但我发现列名似乎保留包装当我SELECT
从(subqueries)
。SQLite3:列名中出现意外的包装时(子查询)
比较这些查询:
SELECT `name` FROM `sqlite_master` WHERE `type`='table'; // works as I expected
和(随便选):
// do not work as I expected but might work as expected...
SELECT `name` FROM (SELECT `name` FROM `sqlite_master` WHERE `type`='table');
SELECT [name] FROM (SELECT `name` FROM `sqlite_master` WHERE `type`='table');
ISSUE:一是一个未经修饰带来了列名。所以,列名是name
。对于第二个从子查询中进行选择的列名是不变的。返回backticks, square brackets [], double quotes "
...任何名称包装应该是... IMO,丢弃。
这是预期的行为?似乎不一致,要么保持包装或丢弃......
PS:我现在抛弃他们,当我配对的列映射,还是......我想知道如果这是正确的。 ..
PPS:它发生在sqlite3库和Navicat客户端。
快速解决方案:3.7.14已损坏。更新您的客户到一个新版本!更换第三方软件中的DLL(但保留备份副本以防万一)也有此问题。
好:)更新SQLite客户端中的DLL,现在它正常工作。认为这是一个错误,但谷歌在这一个失败。必须重新编译我正在使用的那个(3.7.14),因为它在3.7.15中已经修复。 – CodeAngry 2013-03-15 14:41:04