1

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

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

所以,这可以归结为:你可以创建一个输入字符串(和/或定义一个环境),它不会<value>在第二个语句中输出吗?

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

我能想到的事情:

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

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

非常感谢您的意见!

4

1 回答 1

1

您可以相信所有数据库的功能,标准用途,字符串和整数都很简单,因为它将该数字或字符的二进制表示保存在您选择的字符集中。

Decimal Double和single的值是不同的,因为不能直接保存所以涉及到分形看十进制表示

这也符合标准,但您必须对此负责。

于 2020-06-18T15:53:49.803 回答