【发布时间】:2012-03-29 08:32:36
【问题描述】:
我正在设置一个变量,然后我想使用USE 命令来更改数据库。不幸的是,USE 不计算变量。
SET @con="testDB";
Query OK, 0 rows affected (0.00 sec)
select @con;
+--------+
| @con |
+--------+
| testDB |
+--------+
1 row in set (0.00 sec)
use @con;
ERROR 1049 (42000): Unknown database '@con'
因此,当我尝试连接时,不会评估变量的值。有什么想法吗?
【问题讨论】:
-
我认为你在使用 SET 时想要 ":=" 而不是 "="
-
如果我使用 := 或只使用 = 也是一样的,这意味着 USE 仍然会尝试评估字符串 @con
-
是的。刚刚发现:“您还可以在 SET 以外的语句中为用户变量赋值。在这种情况下,赋值运算符必须是 := 而不是 =,因为后者在非 SET 语句中被视为比较运算符 = :“。抱歉,我帮不上忙。
-
感谢您的尝试。希望以前有人遇到过这个问题。
-
USE接受一个标识符。它与字符串文字一起使用是一个未记录的怪癖,并不意味着它将采用变量(或者实际上是任何表达式)。简而言之,它就是不能那样工作。
标签: mysql database deployment connection