データベースのキーワードが実際にはif、else if、elseのような形式になっている場合、判定条件を取得する方法です。
ストアドプロシージャで記述されるSQLの構文形式は、通常時に記述されるSQLと基本的に同じであり、case whenの使い方や呼び出し方も同様です。
最初の例:
select qzh from ywda_swjg_qzh_dz where swjg = ( select case when substr('11101823000'),0,7) = '1110182' then substr('11101960000',0,8) || '000' else substr('1110196000',0,7) || '0000' end swjgdm from ywda_swjg_qzh_dz where a.swjg_dm = b.swjg_dm);
case when はクエリ結果に使用できるだけでなく、where 条件の後の判定条件としても使用できます。
この SQL には両方の状況が含まれています。もちろん、where 条件に select を追加せずに、形式を直接使用することもできます。例:
select qzh from ywda_swjg_qzh_dz where swjg = case when substr('11101823000'),0,7) = '1110182' then substr('11101960000',0,8) || '000' else substr('1110196000',0,7) || '0000' end;
メソッドが間違いなくもっと多い場合効率的。
注: case when は then および end と一緒に使用する必要があります。
もちろん、私のストアド プロシージャはこのように書いているわけではありません。今日、上司は「あまり責任を負わなくても、if と else の形式で書いてください」と言っていました。
ストアド プロシージャの if および else 形式は、フロントエンドおよびバックエンドで使用される if および else 形式とは少し異なります。会社には外部ネットワークがなく、純粋に手作りです。投稿しません。 Java コードをダウンロードし、ストアド プロシージャの一部を直接アップロードします。
if substr(AVC_QXSWJG,0,8) = '11100006' or substr(AVC_QXSWJG,0,7) = '1110182' then select qzh into avc_qch from ywda_swjg_qzh_dz where swjg_dm = substr(avc_qxswjg,0,8) || '000'; elsif 条件(不加括号) then ................................sql省略......................................... else .................................sql省略....................................... end if; sql结束。
ここでの論理演算子は SQL 論理演算子、つまり and と or を使用していることに注意してください。
上記の「||」は、論理和ではなく、フィールドの後に文字列を追加していることに注意してください。
if の終わりの後に、現在の if の終わりを示すために必ず end if を追加してください。
推奨チュートリアル: mysql ビデオ チュートリアル
以上が使用時の場合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。