MySQL / MariaDB在存储时可以静默地更改值的方式



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

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

因此,这归结为:您能否创建一个输入字符串(和/或定义一个环境(,其中它不会在第二个语句中输出<value>

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

我能想到的事情:

  • 包含转义的字符串 (aa(
  • 如果太长,则截断
  • 不支持输入的表的字符编码

如果某些内容静默失败,可能还取决于 SQL 模式的设置程度(如最后两个示例(。

提前非常感谢您的意见!

您可以相信所有数据库都这样做,标准的目的是什么,对于字符串和整数来说很简单,因为它将该数字或字符的二进制表示形式保存在您选择的字符集中。

十进制双精度值和单值是不同的,因为不能直接保存,所以涉及到分形见十进制表示

这也遵循标准,但你必须考虑到它。

相关内容

  • 没有找到相关文章

最新更新