【问题标题】:MySQL create string variableMySQL创建字符串变量
【发布时间】: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)

您可以在此处看到数据没有问题 -- 如有任何帮助,我们将不胜感激。

【问题讨论】:

标签: mysql variables


【解决方案1】:

你可以使用FIND_IN_SET:

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

在您的情况下,使用 IN 不起作用,因为变量是 cast to 1

参考文献

FIND_IN_SET() vs IN()

difference between where_in and find_in_set

Why find_in_set works but IN clause

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多