【发布时间】:2017-10-21 22:48:48
【问题描述】:
在将字符串转换为整数值时,MySQL 中的 cast 和 convert 函数都会抛出“截断不正确的 INTEGER 值”:
select cast(mycolumn as unsigned) from mytable;
我想了解 PHP 和大多数其他编程语言的行为,这意味着我想将所有非数字字符串强制转换为零。
在 MySQL 中最有效的方法是什么?
【问题讨论】:
-
“我想获得 PHP 和大多数其他编程语言的行为,这意味着我想将所有非数字字符串强制转换为零。”我希望您尝试 C 或 C# 中的
int x = "Hello";或 Python 中的int("Hello"),看看您会得到什么。许多编程语言都是静态类型的,或者不允许无效的类型转换。您可能整天都在使用 PHP 和 JavaScript,但这并不意味着当您进行错误类型转换时会静默修改数据的动态类型语言是默认语言。 -
@BaconBits:说句公道话,这是
atoi和C/C++中一些相关函数的行为。 -
@DavisHerring 是的,但这并不是真正的类型转换,
CAST()和CONVERT()就是这样。 C 类型转换为(int) 'Hello'。atoi有一种特殊的算法可以故意丢弃数据。
标签: mysql