如何在SQL中大写记录的第一个字母

时间:2014-04-22 15:48:25

标签: sql sql-server-2008

我有一个带有Comments字段的表格,我希望将每个记录中字符串的第一个字母大写,例如更改'复制'进入'复制'。有些记录在开始时已有资金,有些甚至可能是数字。

我试过这个

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

但它失败了,因为我的领域是一个  '类型。

能够在完全停止(句号)之后将第一个字母大写是有用的,但除非有人已经编写了代码,否则这不是必需的。

提前致谢。

3 个答案:

答案 0 :(得分:2)

将您的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)))));  

答案 1 :(得分:1)

将您的列转换为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)))))  

答案 2 :(得分:0)

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

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