首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么选择CAST('1cat‘AS SIGNED) = '1cat';是真的吗?

为什么选择CAST('1cat' AS SIGNED) = '1cat';是真的吗?

这个问题涉及到数据库中的数据类型转换和比较操作。首先,CAST('1cat' AS SIGNED)是将字符串'1cat'转换为有符号整数类型。在这种情况下,由于字符串的开头是数字'1',所以转换结果为整数1。然后,我们将整数1与字符串'1cat'进行比较,即1 = '1cat'。

然而,这个比较结果是错误的。原因是在比较操作中,数据库会将字符串与数字进行比较时,会将字符串转换为数字类型。在这个例子中,字符串'1cat'无法转换为数字,因此转换结果为0。所以,实际上比较的是1 = 0,这是错误的。

正确的比较应该是:

CAST('1cat' AS SIGNED) = 1

这样才能得到正确的比较结果。

总结起来,选择CAST('1cat' AS SIGNED) = '1cat'是错误的,因为这个比较操作会导致错误的结果。正确的比较应该是将字符串转换为数字类型后再进行比较。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【MYSQL】字符转换和group_concat()函数的排序方法

    1.1 将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将test表中的 t 进行排序,可t的定义为varchar,可以这样解决 select * from test order by (t+0) 1.2在进行ifnull处理时,比如 ifnull(a/b,'0') 这样就会导致 a/b成了字符串,因此需要把'0'改成0,即可解决此困扰 1.3 比较数字和varchar时,比如a=11,b="11ddddd"; 则 select 11="11ddddd"相等 若绝对比较可以这样: select binary 11 =binary "11ddddd" 1.4 字符集转换 : CONVERT(xxx USING gb2312) 类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型),类型必须用下列的类型: 可用的类型:  二进制,同带binary前缀的效果 : BINARY 字符型,可带参数 : CHAR() 日期 : DATE 时间: TIME 日期时间型 : DATETIME 浮点数 : DECIMAL 整数 : SIGNED 无符号整数 : UNSIGNED

    01
    领券