mysql隐式转化

参考至:
https://yq.aliyun.com/articles/39477

隐式转化会有一些很奇怪的情况发生。
例如:当一个字符串字段去与一个数值比较时,结果为true
所以查询时参数最好不要忘了引号。

有空在写。。。。

### MySQL 字符串类型转换规则 在 MySQL 中,当操作涉及不同类型的值时会发生类型转换。对于字符串到其他类型的转换有特定的行为模。 #### 转换数值型 当一个字符串被用于算术运算或数值进行比较时,MySQL 尝试将其解析成浮点数或整数[^1]。例如: ```sql SELECT '123' + 456; -- 结果为 579, 因为 '123' 被解释成了数字 123. ``` 如果字符串开头部分可以成功转化为有效的数字,则只取这部分作为结果;其余非数字字符会被忽略掉。但如果整个字符串都不能表示任何有效数字,则返回0[^4]。 #### 转换为日期时间型 某些情况下,MySQL 可能会尝试把看起来像日期/时间格字符串转成相应的 DATE 或 DATETIME 类型。比如: ```sql SELECT STR_TO_DATE('2023-08-15','%Y-%m-%d'); -- 成功转换并返回对应日期对象 ``` 不过需要注意的是,并不是所有的看似合理的日期字符串都能顺利完成这样的转变——这取决于具体上下文中所期望的目标类型以及所提供的格化模板是否匹配实际输入的内容。 #### 应用场景及注意事项 尽管这些功能提供了灵活性,但在实践中应当谨慎对待它们带来的便利性。因为依赖于转换可能导致意外行为的发生,尤其是在涉及到索引优化方面可能会造成负面影响[^5]。因此建议尽可能地保持数据的一致性和明确性,在必要之处采用显示强制转换函数(如 CAST() 和 CONVERT()),从而确保预期之外的情况不会影响应用程序逻辑正确性的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值