我发现了一些非常奇怪的mysql行为。
如果我运行以下命令:
mysql> select left(concat("A", "B®"), 3);
然后输出如预期:
+-----------------------------+
| left(concat("A", "B®"), 3) |
+-----------------------------+
| AB® |
+-----------------------------+
1 row in set (0.00 sec)
但是,如果我用某个数字(在这种情况下为 1)更改“A”:
mysql> select left(concat(1, "B®"), 3);
Unicode 字符“®”已损坏:
+---------------------------+
| left(concat(1, "B®"), 3) |
+---------------------------+
| 1B? |
+---------------------------+
1 row in set (0.00 sec)
任何人都知道如何解释这种奇怪的行为以及如何避免它?
上面的例子只是一个复制品,在现实生活中它是数字和前面未知的字符串(不是硬编码的字符串)的连接。
非常感谢!