gpt4 book ai didi

mysql - 选择连接输出不完全匹配 [MySQL]

转载 作者:太空宇宙 更新时间:2023-11-03 11:45:34 24 4
gpt4 key购买 nike

任何人都可以解释为什么查询:

select rma.id, history_transactions.reference 
from history_transactions
join rma on history_transactions.reference = rma.id

返回:

id     | reference
100144 | 100144
102299 | 102299a
100316 | 100316AFEN1

无法让它只显示 100% 匹配,所以只显示第一行。如果有人能解释为什么会发生,那就太好了。

最佳答案

显然 rma.id 列是数字(整数),而引用字段是文本,因为它也包含文本。

作为 Type Conversion in Expression Evaluation 上的 MySQL 文档说明,如果比较text和number,比较的是一个 float ,也就是说引用字段被转为数字。

MySQL 通过从左到右评估其字符将字符串转换为数字,只要字符可以解释为数字。如果遇到无法作为数字求值的字符,则 MySQL 停止求值并将前面的字符作为数值返回。

在第二条记录的情况下,字母a是第一个不能被评估为数字的字符,因此'102299a'字符串的数值是102299。相同的逻辑适用于第 3 条记录。

要强制 MySQL 仅返回完全匹配,请使用 cast() or convert()rma.id 显式转换为字符串查询中的函数。这样,比较将作为字符串而不是 float 来完成。

关于mysql - 选择连接输出不完全匹配 [MySQL],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39103448/

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