SQL大写函数[重复]

Posted

技术标签:

【中文标题】SQL大写函数[重复]【英文标题】:SQL upper case function [duplicate] 【发布时间】:2014-04-02 20:20:27 【问题描述】:

我的 SQL 任务 (Microsoft SQL Server 2008) 有问题。

这是任务:以姓名和姓氏的首字母大写的方式显示客户的姓名和姓氏(例如迈克尔杰克逊)。 我不知道如何用 SQL 编写它。我知道它会是这样的:

select UPPER(name), UPPER(surname) from client ;

但它以大写形式显示所有字母。

【问题讨论】:

sql-server-helper.com/functions/initcap.aspx 可能复制:***.com/questions/55054/… ***.com/questions/3288465/… 通常的方法是确保名称在数据库中正确大写。然后你就不需要任何UPPER 函数了。 (我知道这不适合你,但可能是其他人问同样的问题谁找到了这个。) 【参考方案1】:

使用SUBSTRINGUPPER 只是名字和姓氏的第一个字母,然后将它们分别连接到名字和姓氏的其余部分:

select
    UPPER(SUBSTRING(name, 1, 1)) + SUBSTRING(name, 2, LEN(name)),
    UPPER(SUBSTRING(surname, 1, 1)) + SUBSTRING(surname, 2, LEN(surname))
from client;

虽然这应该解决您所说的问题,但请注意,它不会正确处理姓氏中的大写(例如'MacDowell'),这需要额外的逻辑。

【讨论】:

【参考方案2】:
DECLARE @FirstName NVARCHAR(20) = 'michael';
DECLARE @LastName  NVARCHAR(20) = 'jackson';

SELECT UPPER(LEFT(@FirstName, 1)) + RIGHT(@FirstName, LEN(@FirstName)-1) AS FirstName
      ,UPPER(LEFT(@LastName, 1))  + RIGHT(@LastName, LEN(@LastName)-1) AS LastName

结果

╔═══════════╦══════════╗
║ FirstName ║ LastName ║
╠═══════════╬══════════╣
║ Michael   ║ Jackson  ║
╚═══════════╩══════════╝

【讨论】:

以上是关于SQL大写函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查大写函数是不是可以工作[重复]

如何将我从外部文件中的函数获得的字符串转换为全部大写[重复]

将每个句子的第一个字母大写python [重复]

Ruby中的大写,交换大小写和反转[重复]

mybatis用resultType = map返回值中小写key会有重复的大写的key

如何在 Oracle SQL 中显示索引 [重复]