0

mksqliteを使用して、matlab から SQL データベースを作成してアクセスしています。テーブル内の行数を取得したいと考えています。私はこれを試しました:

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

、しかし戻り値はあまり役に立ちません。スクリプトにブレークポイントを設定して変数を調べると、それが 'COUNT(_)' という 1 つのフィールドを持つ構造体であることがわかります。これは、実際には無効なフィールド名であるように思われるため、それ:

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 が読み取れない無効なフィールド名を何らかの方法で作成することであるということは正しいです。最も簡単な解決策は、AS 句を SQL に追加して、フィールドに適切な名前を付けることです。

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

num = 
    cnt: 0

次に、間接的な余分なレイヤーを削除するには、次のようにします。

>> num = num.cnt;

>> num

num =
     0
于 2012-09-21T04:56:00.083 に答える