私はPythonで次のブール文を持っています:
db_connection.query(
'select storage_time from traces where id=' + trace_id
).dictresult()[0]['storage_time'] == None
基本的に値があるかどうかをチェックstorage_time
し、Matlab で同じことをしたいのですが、None に相当するものが見つかりません。
助けていただけませんか?
ありがとう
私はPythonで次のブール文を持っています:
db_connection.query(
'select storage_time from traces where id=' + trace_id
).dictresult()[0]['storage_time'] == None
基本的に値があるかどうかをチェックstorage_time
し、Matlab で同じことをしたいのですが、None に相当するものが見つかりません。
助けていただけませんか?
ありがとう
MATLAB の Database Toolbox には、NULL 値の処理方法に関する設定があります。これらの設定に応じて、異なる値を取得できます。詳細については、 SETDBPREFSを参照してください。GUIでも設定を変更できます。
デフォルトでは、データを数値として読み取る場合は NaN を取得し、文字列として読み取る場合は「NULL」文字列を取得します。数値の最初のケースでは、ISNAN関数を使用して NaN をチェックします。
null_idx = isnan(fetcheddata);
文字列にはSTRCMPを使用します:
null_idx= strcmp(upper(fetcheddata), 'NULL');
また、データを cell 配列として取得する場合は、CELLFUN で処理するか、 CELL2MAT で行列に変換する必要がある場合があります。
Matlab のイディオムは通常、isempty()
関数を使用することです。
isempty(somefunction(someargument))
空の結果が返されたtrue
場合は返され、そうでない場合は返されます。 somefunction(someargument)
false
私は Matlab DB ツールボックスをあまり使用していないため、Python ステートメントの完全な翻訳が何であるかはわかりません。
このクエリを使用すると、None の代わりにTrue
orをチェックできます。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 などの別の値を返すこともできます。