sql - 第一个和第二个 space 之后的值

sql - values after the 1st and 2nd space

我想将一个字段分成 3 个部分,使用空格 ' '

例子

select name from nametable;

所有信息都在同一字段中。例如 'dr john smith''mrs jane smith'.

我希望将结果分为 3 列:

select title, firstname, lastname from nametable

例如:

'dr' as title, 'john' as firstname, 'smith' as lastname

'mrs' as title, 'jane' as firstname, 'smith' as lastname

你可以使用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;

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