gpt4 book ai didi

mysql - SQL 中使用 CAST 运算符的变量类型转换

转载 作者:行者123 更新时间:2023-11-29 17:19:01 29 4
gpt4 key购买 nike

我正在尝试在 SQL 中使用 CAST 操作从 VARCHAR 获取有符号整数结果。

但是我得到的值与结果相同,而不是有符号整数值。

例如:

如果值为 65520,我在选择查询中使用 CAST( '65520' AS SIGNED INT) 查找 -16 的结果。但我再次得到相同的值 65520。

是否有其他方法可以使用 SQL 将 VARCHAR 转换为 SIGNED INT。

SQL 查询:

SELECT CAST('65520' AS SIGNED INT);

最佳答案

从你的问题看来,你正在尝试将无符号整数转换为有符号整数,这会导致在删除数字的实际符号的符号位后,将该值映射到某个负值。首先,MySQL的整数类型范围是-2147483648到2147483647,所以你使用的测试值太小,无论如何都看不到,即使它可能发生,但它不能。

SMALLINT 类型的无符号范围为 0 到 65535,有符号范围为 -32768 到 32767。但是,不能使用 CASTCONVERT 将值转换为 SMALLINT。您可以做的最好的事情就是转换为 SIGNEDUNSIGNED,但这将再次使用整数类型。

出于教育目的,我还尝试创建一个带有签名 SMALLINT 列的表,然后插入值 65520 来看看会发生什么。结果? 第 1 行“col”列的值超出范围。因此,我们也无法使用此选项来获得您想要的行为。

Demo

关于mysql - SQL 中使用 CAST 运算符的变量类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51360515/

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