我需要将所有名字分成第一个和最后一个。
我在同一列中有名称,名称有几个单词。 例如
table1
Nome
____________________________________
Abel da Silva Barros
Abel da Silva Dias
Abilio Rodrigo Garcia da Silva Costa
Adelino David Oliveira Silva
Ademar Adolfo Lopes Gomes
Adriano Leonel Fernandes Castro Goncalves
Agostinho Alberto Pereira Duarte
Agostinho Fernando Nogueira Pereira
Aires Manuel Oliveira da Costa
Alberto Costa
Alberto Sergio Oliveira Dias Silva
Albino Mouta de Sousa
Alfredo de Sousa Barreto
Alfredo Guilherme Gonçalves Cerqueira
Alfredo Magalhães Queiros
Alfredo Miguel Pereira Goncalves Vieira da Silva
我需要像这样的输出,只有拳头和姓氏!
Abel Barros
Abel Dias
Abilio Costa
Adelino Silva
Ademar Gomes
Adriano Gonçalves
Agostinho Duarte
...
我如何在MS SQL 2016中执行此操作
先谢谢
答案 0 :(得分:4)
您可以尝试使用left,right和charindex
SELECT LEFT(your_col, charindex(' ', your_col) - 1) ,
RIGHT(your_col, CHARINDEX (' ' ,REVERSE(your_col))-1)
from your_table
答案 1 :(得分:1)
您可以执行以下操作。
首先在空格分隔符之前拆分字符串
SUBSTRING(Nome, 0, CHARINDEX(' ', Nome))
然后在最后一次出现时拆分字符串
SUBSTRING( Nome , LEN(Nome) - CHARINDEX(' ',REVERSE(Nome)) + 2 , LEN(Nome))
使用以下+ ' ' +
SELECT SUBSTRING(Nome, 0, CHARINDEX(' ', Nome)) + ' ' +
SUBSTRING( Nome , LEN(Nome) - CHARINDEX(' ',REVERSE(Nome)) + 2 , LEN(Nome) )
FROM table1;
答案 2 :(得分:0)
以防其他人看到此内容并需要SQL Server 2008(或更早版本)。
您可以修改scaisEdge中的答案以处理单个单词名称,而无需使用IIF (introduced in SQL Server 2012)
在查找名字时,只需在名称后面添加一个空格,在查找姓氏时在名称前添加一个空格。 将co.Name替换为您的实际列名。
LEFT(co.Name, charindex(' ', co.Name+' ') - 1) firstname,
RIGHT(co.Name, CHARINDEX (' ' ,REVERSE(' ' + co.Name))-1) lastname,