使用SQL将单词的首字母转换为大写

时间:2019-11-05 07:17:58

标签: sql sql-server tsql stored-procedures

我正在尝试编写一个查询,该查询将姓氏的首字母大写,也将姓氏的首字母大写。我已尝试运行以下查询。

但是输出不正确,例如“ james plummer”显示为“ James Pames”

[FirstName] = UPPER(LEFT(FirstName,1)) + LOWER(SUBSTRING(FirstName,2,LEN(FirstName)))
, [MiddleName]
, [LastName] = UPPER(LEFT(LastName,1)) + LOWER(SUBSTRING(FirstName,2,LEN(LastName)))

3 个答案:

答案 0 :(得分:2)

那是因为在您的代码中,对于[LastName] [LastName]=UPPER(LEFT(LastName,1))+LOWER(SUBSTRING(FirstName,2,LEN(LastName)))

致电SUBSTRING时,您设置的是FirstName而不是LastName, 这会导致LastName然后输出为大写的第一个字符,但以FirstName的子字符串结尾,从而形成有趣的组合。

将其更改为: [LastName]=UPPER(LEFT(LastName,1))+LOWER(SUBSTRING(LastName,2,LEN(LastName))) 将解决您的问题

答案 1 :(得分:2)

如果您使用的是sqlserver,则可以使用stuff函数

select [FirstName] = stuff(lower(FirstName), 1, 1, upper(left(FirstName, 1)))
    ,[MiddleName]
    ,[LastName] = stuff(lower(LastName), 1, 1, upper(left(LastName, 1)))

答案 2 :(得分:0)

似乎您在姓+LOWER(SUBSTRING(FirstName,中的列有误

尝试更改为

     ,[LastName]=UPPER(LEFT(LastName,1))+LOWER(SUBSTRING(LastName,2,LEN(LastName)))