gpt4 book ai didi

mySQL:为什么 if(condition,then ,'' ) != '' 与 if(condition,then,0) != 0 不同

转载 作者:行者123 更新时间:2023-11-29 13:49:15 24 4
gpt4 key购买 nike

我刚刚在 mySQL 数据库上进行一些查询时遇到了一些无法解释的问题:

SELECT
if(LENGTH(partner_id) > 38, SUBSTRING(partner_id FROM 8), 0) as sub_id
from people
Where
if(LENGTH(partner_id) > 38, SUBSTRING(partner_id FROM 8), 0) != 0

到目前为止,这没什么特别的,我只想显示一些partner_ids的一部分。但如果我做的相同语句略有不同(将 0 替换为空字符串 ''):

SELECT
if(LENGTH(partner_id) > 38, SUBSTRING(partner_id FROM 8), '') as sub_id
from people
Where
if(LENGTH(partner_id) > 38, SUBSTRING(partner_id FROM 8), '') != ''

我得到了更多结果。唯一的区别:我在 else 语句中放置了一个空字符串并比较该空字符串。这是 SUBSTRING 函数的一些奇怪行为吗?还是我只见树木不见森林?

最佳答案

一种解释是您有一些合作伙伴 ID,其中子字符串以 0 开头。

在第一种情况下,查询正在进行整数比较。像“0a”这样的字符串计算结果为整数“0”。这等于 0,因此它们被过滤掉。

在第二种情况下,查询正在进行字符串比较。像 '0a' 这样的字符串与 '' 不同,因此它们通过过滤子句。

关于mySQL:为什么 if(condition,then ,'' ) != '' 与 if(condition,then,0) != 0 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922091/

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