SQL Server Converts case for letter that comes after - (hyphen)

I need to convert the case for a letter that comes after a hyphen (-) in all column values

as

Aaa - aaa
Bbbdd - bbbdd
Ccc123 - ccc123

      

to

Aaa - aaa
Bbbdd - bbbdd
Ccc123 - ccc123

      

Please, help!

+3


source to share


4 answers


Usage stuff()

:

declare @str varchar(64) = 'Aaa - aaa'

select stuff(@str,charindex('-',@str)+2,1,upper(substring(@str,charindex('-',@str)+2,1)))

      



Demo version of rexter: http://rextester.com/CCIZDT37194

Returns: Aaa - Aaa

+1


source


Ok, if the format doesn't change here, this is the easy way. It works for nn characters

declare @char varchar(64) = 'Aaa - aaa'

select 
    @char
    ,substring(@char,1,CHARINDEX('-',@char,1)) + ' ' + upper(substring(@char,CHARINDEX('-',@char,1) + 2,1)) + substring(@char,CHARINDEX('-',@char,1)+3,len(@char))

      



Otherwise you need a UDF

0


source


This can help.

DECLARE @InputString VARCHAR(MAX) = 'Aaa - aaa';
DECLARE @Index INT = CharIndex('-', @InputString);
DECLARE @StringToReplace VARCHAR(3) = SUBSTRING ( @InputString ,@Index , 3 );

SELECT REPLACE(@InputString,@StringToReplace,UPPER(@StringToReplace)); 

      

0


source


You can use upper and ParseName

select concat(parsename(Replace(v,' - ', '.'),2), ' - ', Upper(substring(parsename(Replace(v,' - ', '.'),1),1,1)), substring(parsename(Replace(v,' - ', '.'),1),2,len(parsename(Replace(v,' - ', '.'),1)))) 
    from #yourtext

      

Your input table:

create table #yourtext (v varchar(100))

insert into #yourtext (v) values
 ('Aaa - aaa')
,('Bbb - bbb')
,('Ccc - ccc')

      

0


source







All Articles