【发布时间】:2019-09-02 13:12:13
【问题描述】:
有没有办法为 MySQL 变量使用字符串组合?
我知道如果这只是一个数字字符串,这不是问题,但我可以以这种方式使用 SET 吗?
mysql> select @SQL_BIND_DOCS;
+-----------------------------------------------------------------------+
| @SQL_BIND_DOCS |
+-----------------------------------------------------------------------+
| '1','2','3','4','5' |
+-----------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select distinct doc from documents doc where doc in (@SQL_BIND_DOCS);
Empty set (0.01 sec)
mysql> select distinct doc from documents doc where doc in ('1','2','3','4','5');
+---------------------------------+
| doc |
+---------------------------------+
| AA |
| BB |
| CC |
| DD |
| EE |
+---------------------------------+
5 rows in set (0.01 sec)
您可以在此处看到数据没有问题 -- 如有任何帮助,我们将不胜感激。
【问题讨论】:
-
我认为你必须解释你到底需要什么。
-
我认为您需要使用光标。 “用户变量旨在提供数据值。它们不能直接在 SQL 语句中用作标识符或标识符的一部分,例如在需要表或数据库名称的上下文中,或作为保留字(如 SELECT) . 即使变量被引用也是如此..."
-
即便如此,存储似乎是一个数组might be rough。我可能会考虑使用不同的数据格式,例如a string 或temporary table。见Creating array variable in MySQL 和how to set an array as a mysql user variable。