Sql更新列为大写小写

时间:2015-07-02 16:33:57

标签: sql sql-server case

我有一个名为[strCustomerName]

的列

此专栏的内容包括' ray mantle' JAMES MAY' john DOE' RICHARD&朱迪米勒'等等...

我需要对表执行更新以更正所选列中所有值的大小写。 然后,更新将正确的值设置为“Ray Mantle' James May' John Doe' Richard&朱迪米勒'

使用SQL的任何帮助都会很棒。感谢

1 个答案:

答案 0 :(得分:1)

我只想创建一个函数将您的字符串(或您的方案中的名称)转换为CAMEL,如下所示:

CREATE FUNCTION [dbo].[CamelCase]
(@Str varchar(8000))
RETURNS varchar(8000) AS
BEGIN
  DECLARE @Result varchar(2000)
  SET @Str = LOWER(@Str) + ' '
  SET @Result = ''
  WHILE 1=1
  BEGIN
    IF PATINDEX('% %',@Str) = 0 BREAK
    SET @Result = @Result + UPPER(Left(@Str,1))+
    SubString  (@Str,2,CharIndex(' ',@Str)-1)
    SET @Str = SubString(@Str,
      CharIndex(' ',@Str)+1,Len(@Str))
  END
  SET @Result = Left(@Result,Len(@Result))
  RETURN @Result
END;

创建函数后,您可以在更新语句中使用它,如下所示:

UPDATE Customer
SET strCustomerName = dbo.CamelCase(strCustomerName)

你也可以直接在select语句中调用上面的函数来检查值是否会在运行上面的update语句之前正确更新:

select id
      ,dbo.CamelCase(strCustomerName) as CustomerName
from Customer;

希望这有帮助!

SQL Fiddle Demo