首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用t-sql命令将数据更新为大写首字母?

如何使用t-sql命令将数据更新为大写首字母?
EN

Stack Overflow用户
提问于 2012-07-27 20:54:28
回答 6查看 61.3K关注 0票数 19

我的数据库里有一个表。我的表名是"Company“。我想要将数据"company_name“更改为大写首字母。例如:

"ABC公司“

"DEF可塑性“

作为

"Abc公司“

“定义可塑性”

我知道我应该使用"UPDATE“命令。但是怎么做呢?谢谢你的帮忙!

(CONCAT不起作用)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-07-27 21:32:04

SQL Server没有oracle那样的Initcap功能。

可以为Initcap创建UDF。

代码语言:javascript
复制
CREATE FUNCTION [dbo].[InitCap] ( @InputString varchar(4000) ) 
RETURNS VARCHAR(4000)
AS
BEGIN

DECLARE @Index          INT
DECLARE @Char           CHAR(1)
DECLARE @PrevChar       CHAR(1)
DECLARE @OutputString   VARCHAR(255)

SET @OutputString = LOWER(@InputString)
SET @Index = 1

WHILE @Index <= LEN(@InputString)
BEGIN
    SET @Char     = SUBSTRING(@InputString, @Index, 1)
    SET @PrevChar = CASE WHEN @Index = 1 THEN ' '
                         ELSE SUBSTRING(@InputString, @Index - 1, 1)
                    END

    IF @PrevChar IN (' ', ';', ':', '!', '?', ',', '.', '_', '-', '/', '&', '''', '(')
    BEGIN
        IF @PrevChar != '''' OR UPPER(@Char) != 'S'
            SET @OutputString = STUFF(@OutputString, @Index, 1, UPPER(@Char))
    END

    SET @Index = @Index + 1
END

RETURN @OutputString

END
GO

检查UDF工作情况

代码语言:javascript
复制
select [dbo].[InitCap] ('stackoverflow com');

Stackoverflow Com

您可以像这样更新您的表

代码语言:javascript
复制
update table
set column=[dbo].[InitCap](column);
票数 29
EN

Stack Overflow用户

发布于 2012-07-27 20:57:38

代码语言:javascript
复制
update  YourTable
set     company_name = upper(substring(company_name,1,1)) + 
            lower(substring(company_name, 2, len(company_name)-1))
where   len(company_name) > 0

Live example at SQL Fiddle.

票数 10
EN

Stack Overflow用户

发布于 2012-07-27 21:11:19

借助像this one这样的拆分函数。

尝试一下,将YourTable替换为您的表名:

代码语言:javascript
复制
update T
set Name = P.Name
from YourTable as T
  cross apply (select (select upper(left(X.s, 1))+lower(stuff(X.s, 1, 1, ''))+' '
                       from dbo.split(' ', Name) as X
                       for xml path(''), type).value('.', 'varchar(50)')
              ) as P(Name)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11688182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档