「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > SQL選択ステートメントで変数を安全に定義および使用する方法

SQL選択ステートメントで変数を安全に定義および使用する方法

2025-05-01に投稿
ブラウズ:861

How Can I Safely Define and Use a Variable Within a SQL SELECT Statement?

selectステートメント

内で変数を定義して使用すると、ユーザー変数に値を割り当てて同じ選択ステートメント内で使用することは推奨されません。 MySQLのドキュメントは、そのような表現の評価の順序は未定義であり、ステートメント要素とサーバーリリースに基づいて異なる場合があることを明示的に述べています。 @Z:= sum(item)、 2*@z から Tablea;

このクエリでは、2番目の列が@Zの値に2を掛けて返すと予想されます。ただし、MySQLは、評価順序が保証されていないため、nullを返す場合があります。この動作は、以下に示すように、ユーザー変数の代わりにストアドプロシージャを使用することとは異なります。 @Z:= someprocedure(item)、 2*@z から tablea;

SELECT 
    @z:=SUM(item),
    2*@z
FROM
    TableA;

このアプローチにより、可変割り当てが外部クエリで使用される前に発生することを保証します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3