mysql中使用cast操作的变量typecase

wlwcrazw  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(301)

我尝试在sql中使用cast操作从varchar中获取有符号整数结果。
但我得到的结果是相同的值,而不是有符号的整数值。
例如:
如果值是65520,那么我使用 CAST( '65520' AS SIGNED INT) 在我的select查询中。但我又得到了同样的值65520。
是否有其他方法可以使用sql将varchar转换为有符号int。
sql查询:

SELECT CAST('65520' AS SIGNED INT);
py49o6xq

py49o6xq1#

从你的问题听起来好像你在试图将一个无符号整数转换成一个有符号整数,这将导致在删除数字的实际符号的符号位之后,将该值Map到某个负值。首先,mysql的整数类型范围是-2147483648到2147483647,因此您使用的测试值太小,无论如何都看不到,即使它可能发生,但它不能。
这个 SMALLINT 类型的无符号范围为0到65535,有符号范围为-32768到32767。但是,这是不可能使用的 CAST 或者 CONVERT 对…施加价值 SMALLINT . 你所能做的就是 SIGNED 或者 UNSIGNED ,但这将再次使用整数类型。
出于教育目的,我还尝试创建一个带有签名的表 SMALLINT 列,然后插入值 65520 看看会发生什么。结果如何? Out of range value for column 'col' at row 1 . 所以,我们也不能用这个选项来获得你想要的行为。

演示

相关问题