0

我正在使用mksqlite从 matlab 创建和访问 SQL 数据库,并且我想获取表中的行数。我试过这个:

num = mksqlite('SELECT COUNT(*) FROM myTable');

,但返回的值不是很有帮助。如果我在脚本中放置一个断点并检查变量,我发现它是一个具有单个字段的结构,称为 'COUNT(_)',这实际上似乎是一个无效的字段名称,所以我无法访问它:

K>> class(num)

ans =
struct

K>> num

num = 
    COUNT(_): 0

K>> num.COUNT(_)
??? num.COUNT(_)
                    |
Error: The input character is not valid in MATLAB statements or expressions.

K>> num.COUNT()
??? Reference to non-existent field 'COUNT'.

K>> num.COUNT
??? Reference to non-existent field 'COUNT'.

甚至 MATLAB IDE 也无法访问它。如果我尝试在变量编辑器中双击该字段,则会吐出:

??? openvar('num.COUNT(_)', num.COUNT(_));
                                              |
Error: The input character is not valid in MATLAB statements or expressions.

那么如何访问该字段呢?

4

1 回答 1

0

您是正确的,问题在于 mksqlite 以某种方式设法创建了一个无法读取的无效字段名称。最简单的解决方案是在您的 SQL 中添加一个 AS 子句,以便该字段具有一个合理的名称:

>> num = mksqlite('SELECT COUNT(*) AS cnt FROM myTable')

num = 
    cnt: 0

然后要删除额外的间接层,您可以执行以下操作:

>> num = num.cnt;

>> num

num =
     0
于 2012-09-21T04:56:00.083 回答