SQL Server转换案例后面的字母 - (连字符)

时间:2017-03-30 20:17:59

标签: sql-server

我需要在列的所有值中将连字符( - )后面的字母转换为

Aaa - aaa
Bbbdd - bbbdd
Ccc123 - ccc123

Aaa - Aaa
Bbbdd - Bbbdd
Ccc123 - Ccc123

请帮忙!

4 个答案:

答案 0 :(得分:1)

使用declare @str varchar(64) = 'Aaa - aaa' select stuff(@str,charindex('-',@str)+2,1,upper(substring(@str,charindex('-',@str)+2,1)))

Aaa - Aaa

rextester演示:http://rextester.com/CCIZDT37194

返回:{{1}}

答案 1 :(得分:0)

如果格式没有改变,那么这是一种简单的方法。它适用于n - n个字符

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))

否则你need a UDF

答案 2 :(得分:0)

这可能会有所帮助。

var faceList = new List<int>{ 50, 2, 4, 5, 43, 42, 44, 14, 50, 44, 23, 2, 16, 4, 5, 23, 33};
var uniqueList = new Dictionary<int,int>();
var restructuredList = new List<int>();
var i = 0;
faceList.ForEach(f =>
{
  if (uniqueList.ContainsKey(f))
  {
    restructuredList.Add(uniqueList[f]);
    return;
  }
restructuredList.Add(i);
uniqueList.Add(f, i++);
});

答案 3 :(得分:0)

您可以使用upper和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

您的输入表:

create table #yourtext (v varchar(100))

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