SQL 服务器 - 将 LASTNAME、FIRSTNAME 转换为驼峰命名法 Firstname Lastname

SQL Server - Convert LASTNAME, FIRSTNAME to camel case Firstname Lastname

您好,正如标题中所述,我的姓名格式为 LASTNAME、FIRSTNAME,我希望数据格式为 Firstname Lastname。这将在 SSIS 中的 OLE DB SOURCE 查询中使用,因此不要在函数中使用它。如何才能做到这一点?

如何将名字转换为驼峰式?你怎么知道把大写字母放在哪里?如果 FIRSTNAME 是 JOE,那么它的驼峰式是什么?乔?如果那是您的意思,那么您可以这样做:

SELECT UPPER(LEFT(FIRSTNAME,1))+LOWER(SUBSTRING(FIRSTNAME,2,LEN(FIRSTNAME))) FROM .... 
 declare @NameString Varchar(50) = 'BLOGGS, JOE'

   SELECT  CASE WHEN CHARINDEX(',',@NameString) = 0 THEN 'Unexpected format: ' + @NameString ELSE 
  UPPER(LEFT( RIGHT( @NameString,len(@NameString)-CHARINDEX(',',@NameString)-1 ),1)) +   --First Initial
   LOWER(SUBSTRING(@NameString,CHARINDEX(',',@NameString)+3,LEN(@NameString))) -- rest of first name


  +' ' +
  UPPER(LEFT(@NameString,1)) -- Surname initial
   + LOWER(RIGHT(LEFT(@NameString,CHARINDEX(',',@NameString)-1),LEN(LEFT(@NameString,CHARINDEX(',',@NameString)-1))-1)) -- rest of surname
   END

另一个版本,但功能较少:

DECLARE @Name VARCHAR( 100 )
SET @Name = 'LASTNAME, FIRSTNAME'
SELECT
    -- First Name
    UPPER( SUBSTRING( @Name, CHARINDEX( ',', @Name ) + 2, 1 ))
        + LOWER( SUBSTRING( @Name, CHARINDEX( ',', @Name ) + 3, 1000 ))
    + ' '
    -- Last Name
    + UPPER( LEFT( @Name, 1 ))
        + LOWER( SUBSTRING( @Name, 2, CHARINDEX( ',', @Name ) - 2 ))

看看它与 JamieA 的答案性能比较会很有趣,如果有任何明显差异的话。