对于那些知道的人来说,这可能是一个愚蠢的问题,但这里也是如此。
尝试在查询中使用占位符。我发现以下工作:
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:=.......
请有人解释:= 表示的内容以及语法变化的原因和/或指向文档的方式解释使用:= 。
答案 0 :(得分:4)
:=
是assignment operator。以下信息来自dev.mysql.com上的documentation。
作业运营商。导致用户变量在左侧 运营商将价值转移到其右侧。右边的值 hand side可以是文字值,另一个是存储值的变量,或者 产生标量值的任何合法表达式,包括结果 查询(如果此值是标量值)。
=
和:=
之间的差异:
=赋值(作为SET语句的一部分,或作为UPDATE语句中SET子句的一部分) :=分配值
与=不同,:=运算符永远不会被解释为比较 运营商。这意味着你可以在任何有效的SQL语句中使用:=(不是 只是在SET语句中)为变量赋值。