gpt4 book ai didi

mysql - 严格模式避免类型转换

转载 作者:IT王子 更新时间:2023-10-29 00:35:23 25 4
gpt4 key购买 nike

有没有sql模式会返回错误而不是隐式地将字符串转换为整数?

mysql> select * from todel ;
+------+--------+
| id | name |
+------+--------+
| 1 | abc |
| 2 | xyz |
| 0 | ABCxyz |
+------+--------+
3 rows in set (0.00 sec)

我期待一条错误消息,而不是 id 为 0 的行

mysql> select * from todel where id = 'abc';
+------+--------+
| id | name |
+------+--------+
| 0 | ABCxyz |
+------+--------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+-----------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'abc' |
+---------+------+-----------------------------------------+
1 row in set (0.01 sec)

最佳答案

我理解您的担忧,但正是出于这个原因,您应该永远将 id 设置为 0。从长远来看,我认为你应该在行为之前重新考虑你的表格行,这在理想情况下不是问题。通过一些搜索,我没有找到与此相关的任何内容,这可能是因为除非您自己解决,否则这可能不是问题。

除此之外,您可以读取相关的列数据并在 php/whatev 中采取相应的行动。从 information_schema 中的表 COLUMNS 中,您可以按 TABLE_SCHEMA(数据库)、TABLE_NAMECOLUMN_NAME 进行过滤 获取 DATATYPE( double )。如果您要更改的列具有特定的 DATATYPE,请让脚本在运行 MySQL 查询之前给出错误。

另一种方法是在解析之前转换输入:

if ( ! is_numeric($id))
$id = 'NULL';

为了防止不正确的 INSERTs 或 UPDATEs,您已经 have that mode .


最后我想不出很多实用的方法来让你所追求的这种严格模式对 MySQL 用户有利。

关于mysql - 严格模式避免类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18589852/

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