sql - 第1和第2空格后的值

时间:2017-08-07 03:24:33

标签: sql-server substring charindex

我想使用空格<%#= %>

将字段分成3个部分

示例

' '

所有信息都在同一个字段中。例如select name from nametable; 'dr john smith'

我希望将结果分为3列:

'mrs jane smith'

例如:

  

'dr'作为头衔,'john'作为名字,'smith'作为姓氏

     

'mrs'作为头衔,'jane'作为名字,'smith'作为姓氏

1 个答案:

答案 0 :(得分:1)

您可以使用parsename()功能,如下所示:

declare @name varchar(100) = 'Mr John Nash'

select  parsename(Replace(@name , ' ', '.'), 3) as title,
        parsename(Replace(@name, ' ', '.'), 2) as firstName,
        parsename(Replace(@name, ' ', '.'), 1) as lastName;

如果您的@name中有句号,则可以使用此句:

declare @name varchar(100) = 'Mr. John Nash'


select  Replace(parsename(Replace(Replace(@name, '.', '*') , ' ', '.'), 3), '*', '.') as title,
        Replace(parsename(Replace(Replace(@name, '.', '*'), ' ', '.'), 2), '*', '.') as firstName,
        Replace(parsename(Replace(Replace(@name, '.', '*'), ' ', '.'), 1), '*', '.') as lastName;

在这里,您首先将.替换为您从未见过的符号,例如*。最后,您再次将*替换为.