嗨,因为它在标题中声明我有LASTNAME,FIRSTNAME格式的名字,我希望数据的格式为Firstname Lastname。这将在SSIS中的OLE DB SOURCE查询中使用,因此不要在函数中使用它。如何才能做到这一点?
答案 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答案表现的比较会很有趣。