2

いくつかのテストを行うために使用している基本的なクエリがあり、結果が問題ないかどうかについてのフィードバックを期待していました。約 100 件のレコードから結果をクロス チェックしましたが、すべて問題ないように見えますが、約 100 万件のレコードを実行しているため、結果が正確であることを確認したいと考えています。

これは、while() ループを実行している基本的なクエリです。

    ... OR $row['last_action_txt'] == 'AUTO REC OK' 
    OR $row['action_txt'] == 'MAINT OK'
    OR $row['action_txt'] == 'LASTATUS OK' 
    OR $row['action_txt'] == 'ACCT LEAD OK' 
    AND $row['disp_txt'] == 'ACTIVE') { ...  

AND は、真であるために必要な他の OR の少なくとも 1 つを作成しますか?

4

2 に答える 2

4

あなたのコードは以下と同等です:

... OR $row['last_action_txt'] == 'AUTO REC OK' 
OR $row['action_txt'] == 'MAINT OK'
OR $row['action_txt'] == 'LASTATUS OK' 
OR ($row['action_txt'] == 'ACCT LEAD OK' AND $row['disp_txt'] == 'ACTIVE')) { ...  

は最もAND近いものにORのみ適用されます。これは、演算子の優先順位によるものです。AND

于 2013-03-16T23:06:27.747 に答える
1

ands と ors を組み合わせる場合、正しい結果が得られるように括弧を追加する必要がある場合があります。上記で「or」された値の少なくとも 1 つが必要な場合は、OR するすべての用語を括弧で囲みます。

if( ($row['last_action_txt'] == 'AUTO REC OK' 
OR $row['action_txt'] == 'MAINT OK'
OR $row['action_txt'] == 'LASTATUS OK' 
OR $row['action_txt'] == 'ACCT LEAD OK') 
AND $row['disp_txt'] == 'ACTIVE') { ...  

括弧を配置する場所は、true 値と false 値が結果を決定する方法に影響します。

于 2013-03-16T23:07:14.620 に答える