关于mysql:查询给出了错误的答案

Query giving wrong answer

我使用的是MySQL,我想要名字大写的第一个字母和剩余的字符(小写),我使用的查询是

1
select  UPPER(LEFT(FirstName,1))+LOWER(SUBSTRING(FirstName,2,LENGTH(FirstName))) FirstName from colliers;

这将给出答案0,但它在SQL Server中工作得很好。


您必须使用concat()。加号"concatenation在MySQL中不起作用。你可能会得到这样的结果:

1
select CONCAT(UPPER(LEFT(FirstName,1)), LOWER(SUBSTRING(FirstName,2,LENGTH(FirstName)))) FirstName from colliers;

顺便说一下,在SUBSTRING()函数调用中不需要LENGTH(FirstName)。当省略第三个参数时,SUBSTRING()假设您需要字符串的其余部分。


你必须使用CONCAT(),而不是+

1
SELECT CONCAT(UPPER(LEFT(FirstName,1)),LOWER(SUBSTRING(FirstName,2,LENGTH(FirstName)))) FirstName from colliers


还有一种方法可以解决这个问题!

我将使用concat()、ucase()/upper()、lcase()/lower()、mid()/substring()。

1
2
3
4
5
SELECT CONCAT (
        upper(mid(Firstname, 1, 1))
        ,lower(mid(Firstname, 2))
        )
FROM colliers;