我正在使用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.
那么我该如何访问这个字段?
答案 0 :(得分:0)
你是对的,问题是mksqlite以某种方式设法创建一个无法读取的无效字段名称。最简单的解决方案是在SQL中添加一个AS子句,以便该字段具有合理的名称:
>> num = mksqlite('SELECT COUNT(*) AS cnt FROM myTable')
num =
cnt: 0
然后删除额外的间接层,你可以这样做:
>> num = num.cnt;
>> num
num =
0