如何在SQL中将记录的首字母大写

问题描述 投票:0回答:4

我有一个带有注释字段的表,我想将每个记录中字符串的第一个字母大写,例如将“duplicate”更改为“Duplicate”。有些记录一开始就已经有大写字母,有些甚至可能是数字。

我试过这个

SELECT UPPER(LEFT(Comments,1))+SUBSTRING(Comments,2,LEN(Comments)) FROM dbo.Template_Survey

但它失败了,因为我的字段是“ntext”类型。

能够将句号(句号)后的第一个字母大写也很有用,但这并不是必需的,除非有人已经编写了代码。

提前致谢。

sql sql-server-2008
4个回答
4
投票

将 ntext 转换为 nvarchar(max) 并执行上移和左移操作。示例如下。

SELECT UPPER(LEFT(cast(Comments as nvarchar(max)),1)) +
LOWER(SUBSTRING(cast(Comments as nvarchar(max)),2,
LEN(cast(Comments as nvarchar(max)))))  
FROM dbo.Template_Survey;

以下应该适用于更新。

Update dbo.Template_Survey SET Comments = 
UPPER(LEFT(cast(Comments as nvarchar(max)),1)) +
LOWER(SUBSTRING(cast(Comments as nvarchar(max)),2,
LEN(cast(Comments as nvarchar(max)))));  

2
投票

将您的列转换为 nvarchar(max)

这是工作示例

http://sqlfiddle.com/#!3/5dd26/3

要更新记录,您可以使用:

Update dbo.Template_Survey
 set Comments = UPPER(LEFT(cast(Comments as nvarchar(max)),1)) +
LOWER(SUBSTRING(cast(Comments as nvarchar(max)),2,
LEN(cast(Comments as nvarchar(max)))))  

0
投票

我的帖子有点晚了,但这个解决方案更短。这适用于 sql server 2008+:

SELECT
  UPPER(CAST(Comments as nchar(1)))+LOWER(STUFF(CAST(Comments as nvarchar(max)),1,1,''))
FROM dbo.Template_Survey

0
投票

或:

UPDATE `table` SET name = CONCAT(UPPER(LEFT(name,1)),LOWER(RIGHT(name,LENGTH(name)-1)))
© www.soinside.com 2019 - 2024. All rights reserved.