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 回答