为什么find

编程入门 行业动态 更新时间:2024-10-21 14:27:59
本文介绍了为什么find_in_set有效但是IN子句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有这样的代码.

DELIMITER $$ CREATE PROCEDURE `sp_deleteOrderData`(orderid BIGINT(11)) BEGIN DECLARE shipmentnumbers VARCHAR(1000); DECLARE cartonid VARCHAR(1000); SELECT GROUP_CONCAT(a_shipmentid) FROM t_shipment WHERE a_orderid = orderid INTO shipmentnumbers; SELECT GROUP_CONCAT(a_cartonid) FROM t_carton WHERE a_shipmentid IN (shipmentnumbers) INTO cartonid; SELECT shipmentnumbers; /*SELECT cartonid; */ END$$ DELIMITER ;

此处发货编号返回100020,100021,100022 理想情况下,cartonid应该以11,12,13

Here shipmentnumbers returns 100020,100021,100022 Ideally cartonid should be returned as 11,12,13

但是我只有11个作为肉毒杆菌素.

But i get only 11 as cartonid.

但是当我使用下面的代码时,我会得到正确的结果.

But when i use below code i get proper result.

SELECT GROUP_CONCAT(a_cartonid) FROM t_carton WHERE FIND_IN_SET( a_shipmentid, shipmentnumbers ) INTO cartonid;

我想知道IN和FIND_IN_SET之间到底有什么区别,然后我决定要使用什么.

I wanted to know what exactly is the difference between IN and FIND_IN_SET and hwo di i decide what to use.

推荐答案

IN接受要搜索的列表或参数,FIND_IN_SET接受包含逗号分隔列表的字符串参数:

IN accepts a list or parameters to search, FIND_IN_SET accepts a string parameter containing a comma-separated list:

SELECT 1 IN (1, 2, 3, 4) SELECT FIND_IN_SET(1, '1,2,3,4')

如果您尝试将IN应用于逗号分隔的字符串,它将会将其视为单个参数,并将其作为一个整体进行匹配:

If you try to apply IN to a comma-separated string, it will treat it as a single parameter and will match it as a whole:

SELECT 1 IN ('1,2,3,4')

当然,字符串'1'与字符串'1,2,3,4'不相等,因此上面的查询返回false.

Of course, the string '1' is not equal to the string '1,2,3,4' so the query above returns false.

更多推荐

为什么find

本文发布于:2023-10-26 18:54:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1531049.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:find

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!