任何想法为什么这明智地*:

mysql> select lower('AB100c');
+-----------------+
| lower('AB100c') |
+-----------------+
| ab100c          |
+-----------------+
1 row in set (0.00 sec)

但这不是吗?
mysql> select lower(concat('A', 'B', 100,'C'));
+----------------------------------+
| lower(concat('A', 'B', 100,'C')) |
+----------------------------------+
| AB100C                           |
+----------------------------------+
1 row in set (0.00 sec)

*明智地=“我认为它应该起作用的方式”。

最佳答案

MySql String functions所述:





在您的代码中,您要传递100作为数字,因此concat将返回一个二进制字符串,并且在应用于二进制字符串时,lower无效,这就是为什么它不会被转换的原因。如果要进行转换,可以尝试以下操作:

select lower(concat('A', 'B', '100','C'));

关于MySQL concat()和lower()怪异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5906660/

10-13 04:08