首页 > 解决方案 > MySQL创建字符串变量

问题描述

有没有办法为 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)

您可以在此处看到数据没有问题 - 提供的任何帮助将不胜感激。

标签: mysqlvariables

解决方案


您可以使用FIND_IN_SET

select distinct doc from  documents doc where FIND_IN_SET(doc, @SQL_BIND_DOCS);

在您的情况下,使用IN不起作用,因为变量被强制转换为 1

参考

FIND_IN_SET() 与 IN()

where_in 和 find_in_set 的区别

为什么 find_in_set 有效但 IN 子句


推荐阅读