mysql - 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)
您可以在此处看到数据没有问题 - 提供的任何帮助将不胜感激。
解决方案
您可以使用FIND_IN_SET:
select distinct doc from documents doc where FIND_IN_SET(doc, @SQL_BIND_DOCS);
在您的情况下,使用IN不起作用,因为变量被强制转换为 1。
参考
推荐阅读
- apache - 通过 SNI 提供的 Apache 错误主机名 myfirstweb.intweb.net 和通过 HTTP 提供的主机名 mysecondweb.intweb.net 不同
- javascript - 使用 jQuery 合并表格行
- azure - Azure Functions V2 每次发布前都必须停止函数,因为 dll 很忙
- python - 使用 pyfirmata 控制 16x16 led 点阵
- arrays - X86 Assembly Printing Max in Array 返回分段错误(核心转储)
- c++ - 获取智能指针容器的 const 视图的方法
- python - python用所有可能的组合替换具有多个值的子字符串
- c - 如何解决 Eclipse CDT 中的“未定义的函数引用”?
- rpc - 什么取代了 pmap_set 命令?
- c# - 使用 htmlagilitypack 选择特定的 td