非常に奇妙な mysql の動作を見つけました。
次のコマンドを実行すると:
mysql> select left(concat("A", "B®"), 3);
次に、出力は期待どおりです。
+-----------------------------+
| left(concat("A", "B®"), 3) |
+-----------------------------+
| AB® |
+-----------------------------+
1 row in set (0.00 sec)
ただし、「A」を数字 (この場合は 1) に変更すると、次のようになります。
mysql> select left(concat(1, "B®"), 3);
Unicode 文字 "®" が壊れます:
+---------------------------+
| left(concat(1, "B®"), 3) |
+---------------------------+
| 1B? |
+---------------------------+
1 row in set (0.00 sec)
この奇妙な動作を説明する方法とそれを回避する方法を知っている人はいますか?
上記の例は単なる再現にすぎません。実際には、数値と未知の文字列 (ハードコードされた文字列ではありません) を組み合わせたものです。
どうもありがとう!