2

これはおそらく知っている人にとってはばかげた質問ですが、ここに行きます。

クエリでプレースホルダーを使用して実験します。次のように動作することがわかりました。

SELECT day, @dy:=CAST( CASE day
                         WHEN 'Su' THEN 1
                         WHEN 'Mo' THEN 2
                         WHEN 'Tu' THEN 3
                         WHEN 'Wed' THEN 4
                         WHEN 'Th' THEN 5
                         WHEN 'Fr' THEN 6
                         WHEN 'Sa' THEN 7
                     END AS UNSIGNED) as dayofweek 
 FROM `Schedule_Repetition` WHERE repetition_Key='426';

しかし、これは機能しません

SELECT day, @dy=CAST( CASE day
                         WHEN 'Su' THEN 1
                         WHEN 'Mo' THEN 2
                         WHEN 'Tu' THEN 3
                         WHEN 'Wed' THEN 4
                         WHEN 'Th' THEN 5
                         WHEN 'Fr' THEN 6
                         WHEN 'Sa' THEN 7
                     END AS UNSIGNED) as dayofweek 
 FROM `Schedule_Repetition` WHERE repetition_Key='426';

:= が何を意味し、構文が異なる理由を誰かが説明したり、 :=@P=.....の使用を説明するドキュメントへの道を示したりしてください。@P:=.......

4

1 に答える 1

4

:=代入演算子です。以下の情報は、dev.mysql.comのドキュメントからのものです。

代入演算子。演算子の左側のユーザー変数がその右側の値を取るようにします。右側の値は、リテラル値、値を格納する別の変数、またはクエリの結果を含むスカラー値を生成する任意の有効な式です (この値がスカラー値である場合)。

=との違い:=:

= 値を割り当てます (SET ステートメントの一部として、または UPDATE ステートメントの SET 句の一部として) := 値を割り当てます

= とは異なり、:= 演算子は比較演算子として解釈されることはありません。これは、変数に値を代入するために、有効な SQL ステートメント (SET ステートメントだけでなく) で := を使用できることを意味します。

dev.mysql.com でオペレーターの完全なリストを確認してください。

于 2013-01-14T13:20:15.843 に答える