我有一个带有注释字段的表,我想将每个记录中字符串的第一个字母大写,例如将“duplicate”更改为“Duplicate”。有些记录一开始就已经有大写字母,有些甚至可能是数字。
我试过这个
SELECT UPPER(LEFT(Comments,1))+SUBSTRING(Comments,2,LEN(Comments)) FROM dbo.Template_Survey
但它失败了,因为我的字段是“ntext”类型。
能够将句号(句号)后的第一个字母大写也很有用,但这并不是必需的,除非有人已经编写了代码。
提前致谢。
将 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)))));
将您的列转换为 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)))))
我的帖子有点晚了,但这个解决方案更短。这适用于 sql server 2008+:
SELECT
UPPER(CAST(Comments as nchar(1)))+LOWER(STUFF(CAST(Comments as nvarchar(max)),1,1,''))
FROM dbo.Template_Survey
或:
UPDATE `table` SET name = CONCAT(UPPER(LEFT(name,1)),LOWER(RIGHT(name,LENGTH(name)-1)))