gpt4 book ai didi

MySQL 函数使用 IN 运算符时的奇怪情况

转载 作者:行者123 更新时间:2023-11-29 07:39:19 24 4
gpt4 key购买 nike

我有以下查询,它运行正常并返回字符串2,3FN_GET_PLAN_UPGRADE_OPTIONS 返回 VARCHAR

SELECT FN_GET_PLAN_UPGRADE_OPTIONS(1);

现在,当我使用 IN 运算符将此函数调用添加到 WHERE 子句中时,它仅返回 act_id 包含 2 的结果,而不会返回 act_id 包含 3 的结果,那里是两者的数据,因此两者都应该返回,任何建议或想法,都不会抛出错误!?

SELECT act_id
, act_name
FROM account_types
WHERE act_id IN (FN_GET_PLAN_UPGRADE_OPTIONS(1));

最佳答案

您要运行的查询是这样的:

SELECT ... WHERE act_id IN (2,3)

但是您实际运行的查询是这样的:

SELECT ... WHERE act_id IN ('2,3')

因为你的函数返回一个字符串(不是值列表),并且由于你正在将字符串与数字(act_id)进行比较,MySQL会自动将此字符串转换为数字,因此你最终会运行以下代码:

 SELECT ... WHERE act_id IN (2)

您可以使用 FIND_IN_SET 来解决您的问题:

SELECT ... WHERE FIND_IN_SET(act_id, FN_GET_PLAN_UPGRADE_OPTIONS(1))>0

关于MySQL 函数使用 IN 运算符时的奇怪情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29550478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com