我正在搜索 MySQL/MariaDB 中存储时传输的值与以后可以检索的值不同的情况。我只对VARCHAR和*TEXT等非二进制字符串数据类型的字段感兴趣。
我想更全面地了解可以信任多少储值。这对于输出只是缺少某些字符的情况(例如下面的转义字符示例)特别有趣,因为这在验证时特别危险。
所以,这可以归结为:你可以创建一个输入字符串(和/或定义一个环境),它不会<value>
在第二个语句中输出吗?
INSERT INTO t SET v = <value>, id = 1; // success
SELECT v FROM t WHERE id = 1;
我能想到的事情:
- 包含转义 (
\a
→a
)的字符串 - 如果太长被截断
- 表的字符编码不支持输入
如果某些事情静默失败,可能还取决于 SQL 模式设置的严格程度(如最后两个示例)。
非常感谢您的意见!