gpt4 book ai didi

mysql 在查询数字/字符串时返回意外结果

转载 作者:行者123 更新时间:2023-11-29 10:32:43 25 4
gpt4 key购买 nike

字段cookingMethodvarchar。当我传递数字参数:in(3,4)时,为什么会得到这个结果?

SELECT distinct(cookingMethod) FROM recipe where cookingMethod in(3, 4);

结果:[3][3,5][3,4][4][4,5]

enter image description here

如果我使用('3','4'),结果只是'3','4'

SELECT distinct(cookingMethod) FROM recipe where cookingMethod in('3', '4')

结果:[3][4]

最佳答案

您的第二个查询很简单,并返回预期结果,因为您正在比较字符串与字符串。

但是,在您的第一个查询中,您使用数字与字符串进行比较。 MySQL 隐式尝试将字段的值转换为数字以执行比较(其他数据库可能只是抛出错误)。但是,由于该字段同时包含数字和逗号,因此出于此查询的目的,MySQL 将其视为带有逗号分隔的数字列表的 BLOB。 IN 运算符将搜索逗号分隔的列表,因此它会匹配逗号内包含 34 的每个字段- 分隔的数字列表。

关于mysql 在查询数字/字符串时返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47088054/

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