SQL Server - 将LASTNAME,FIRSTNAME转换为驼峰案例名字姓氏

时间:2016-05-10 10:13:28

标签: sql-server sql-server-2012 ssis-2012

嗨,因为它在标题中声明我有LASTNAME,FIRSTNAME格式的名字,我希望数据的格式为Firstname Lastname。这将在SSIS中的OLE DB SOURCE查询中使用,因此不要在函数中使用它。如何才能做到这一点?

3 个答案:

答案 0 :(得分:1)

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

SELECT UPPER(LEFT(FIRSTNAME,1))+LOWER(SUBSTRING(FIRSTNAME,2,LEN(FIRSTNAME))) FROM .... 

答案 1 :(得分:1)

 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

答案 2 :(得分:1)

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

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答案表现的比较会很有趣。