SQL中如何将记录的首字母大写
Posted
技术标签:
【中文标题】SQL中如何将记录的首字母大写【英文标题】:How to capitalize the first letter of a record in SQL 【发布时间】:2014-04-22 15:48:25 【问题描述】:我有一个带有 Comments 字段的表,我想将每条记录中字符串的第一个字母大写,例如将“duplicate”更改为“Duplicate”。有些记录一开始就已经有一个大写字母,有些甚至可能是一个数字。
我试过了
SELECT UPPER(LEFT(Comments,1))+SUBSTRING(Comments,2,LEN(Comments)) FROM dbo.Template_Survey
但它失败了,因为我的字段是“ntext”类型。
在句号(句号)之后将第一个字母大写也很有用,但除非有人已经编写了代码,否则这不是必需的。
提前致谢。
【问题讨论】:
你的列数据类型是什么? 看看这个链接:***.com/questions/55054/… 数据类型为 ntext。我现在会看一下链接,谢谢,尽管我在发布问题之前确实搜索了这个网站很长一段时间。 那个链接每个单词的首字母大写,我只需要字符串首字母大写。 【参考方案1】:将您的 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)))))
【讨论】:
这很好,但我的错误,我如何将其转换为更新查询以永久替换为大写的第一个字母。【参考方案3】:我在这里的帖子有点晚了,但这个解决方案更短。这适用于 sql server 2008+:
SELECT
UPPER(CAST(Comments as nchar(1)))+LOWER(STUFF(CAST(Comments as nvarchar(max)),1,1,''))
FROM dbo.Template_Survey
【讨论】:
以上是关于SQL中如何将记录的首字母大写的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JavaScript 将字符串中每个单词的首字母大写?
如何使用ruby / rails将所有大写字母转换为适当的首字母大写字母,其余为小写?