MySQL/MariaDB 的方法可以在存储时悄悄地改变值

Ways MySQL/MariaDB could silently be changing values when storing

我正在 MySQL/MariaDB 中搜索存储时传输的值与以后可以检索的值不同的情况。我只对具有非二进制字符串数据类型的字段感兴趣,例如 VARCHAR*TEXT.

我想更全面地了解储值的可信度。这对于输出 缺少某些字符 的情况尤其有趣(例如下面的转义字符示例),因为这在验证时特别危险。

因此,这可以归结为:您能否创建一个输入字符串(and/or 定义一个环境),使其在第二个语句中不输出 <value>

INSERT INTO t SET v = <value>, id = 1; // success
SELECT v FROM t WHERE id = 1;

我能想到的事情:

如果某些事情无声地失败也可能取决于 SQL 模式设置的严格程度(就像最后两个例子一样)。

非常感谢您的输入!

你可以相信所有的数据库都会做,标准的目的是什么,使用字符串和整数很简单,因为它在你选择的字符集中保存了那个数字或字符的二进制表示。

十进制 Double 和 single 值不同,因为不能直接保存所以涉及到分形见decimal representation

这也符合标准,但你必须考虑到它。