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】:
使用SUBSTRING
到UPPER
只是名字和姓氏的第一个字母,然后将它们分别连接到名字和姓氏的其余部分:
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大写函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将我从外部文件中的函数获得的字符串转换为全部大写[重复]