3

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

like

Aaa - aaa
Bbbdd - bbbdd
Ccc123 - ccc123

to

Aaa - Aaa
Bbbdd - Bbbdd
Ccc123 - Ccc123

Please help!

user979189
  • 1,230
  • 2
  • 15
  • 39

4 Answers4

1

Using stuff():

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

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

rextester demo: http://rextester.com/CCIZDT37194

Returns: Aaa - Aaa

SqlZim
  • 37,248
  • 6
  • 41
  • 59
0

Well if the format doesn't change here's an easy way. It works for n - n 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

Community
  • 1
  • 1
S3S
  • 24,809
  • 5
  • 26
  • 45
0

This might 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)); 
Shridhar
  • 49
  • 7
0

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')
Kannan Kandasamy
  • 13,405
  • 3
  • 25
  • 38