3

私はPythonで次のブール文を持っています:

db_connection.query(
   'select storage_time from traces where id=' + trace_id
).dictresult()[0]['storage_time'] == None

基本的に値があるかどうかをチェックstorage_timeし、Matlab で同じことをしたいのですが、None に相当するものが見つかりません。

助けていただけませんか?

ありがとう

4

4 に答える 4

1

MATLAB の Database Toolbox には、NULL 値の処理方法に関する設定があります。これらの設定に応じて、異なる値を取得できます。詳細については、 SETDBPREFSを参照してください。GUIでも設定を変更できます。

デフォルトでは、データを数値として読み取る場合は NaN を取得し、文字列として読み取る場合は「NULL」文字列を取得します。数値の最初のケースでは、ISNAN関数を使用して NaN をチェックします。

null_idx = isnan(fetcheddata);

文字列にはSTRCMPを使用します:

null_idx= strcmp(upper(fetcheddata), 'NULL');

また、データを cell 配列として取得する場合は、CELLFUN で処理するか、 CELL2MAT で行列に変換する必要がある場合あります。

于 2013-02-21T20:30:37.023 に答える
0

Matlab のイディオムは通常、isempty()関数を使用することです。

isempty(somefunction(someargument))

空の結果が返されたtrue場合は返され、そうでない場合は返されます。 somefunction(someargument)false

私は Matlab DB ツールボックスをあまり使用していないため、Python ステートメントの完全な翻訳が何であるかはわかりません。

于 2013-02-21T16:38:14.473 に答える
0

このクエリを使用すると、None の代わりにTrueorをチェックできます。False

trace_id_exists = db_connection.query("""\
    select exists (
        select 1
        from traces
        where id = %s
        ) "exists"
    """ % trace_id
).dictresult()[0]['exists']

if trace_id_exists:
    ...

1 や 0 などの別の値を返すこともできます。

于 2013-02-21T16:38:54.500 に答える