知道为什么这个工作明智*:
mysql> select lower('AB100c');
+-----------------+
| lower('AB100c') |
+-----------------+
| ab100c |
+-----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
但这不是吗?
mysql> select lower(concat('A', 'B', 100,'C'));
+----------------------------------+
| lower(concat('A', 'B', 100,'C')) |
+----------------------------------+
| AB100C |
+----------------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
*明智地='我认为应该有效的方式'.
LOWER(STR)
当应用于二进制字符串(BINARY,VARBINARY,BLOB)时,LOWER()无效.
CONCAT(STR1,STR2,...)
返回连接参数产生的字符串.可能有一个或多个参数.如果所有参数都是非二进制字符串,则结果为非二进制字符串.如果参数包含任何二进制字符串,则结果为二进制字符串.甲 数字参数被转化为它的 等效二进制串形式; 如果你 想避免这种情况,可以使用 显式类型转换.
在您的代码中,您将100作为数字传递,因此concat将返回二进制字符串,并且当应用于二进制字符串时,lower是无效的,这就是它未被转换的原因.如果你想转换你可以试试这个:
select lower(concat('A', 'B', '100','C'));
Run Code Online (Sandbox Code Playgroud)