0

我正在尝试将名字和姓氏分开。我有一个名为“全名”的列,它的名字和姓氏以及一个逗号都在一个列中。我已经尝试了以下方法,但我收到一个错误“它不是一个有效的数字”。当我删除逗号时它可以工作,所以我不确定如何在公式中加入逗号以便它可以工作。

, substr(Fullname,1,',') as Lastname ,substr(Fullname,',',' ') as Firstname

Column 

Fullname
Brown,John N
Green,Julie T


Desired results
Lastname    FirstName
Brown        John
Green        Julie
4

3 回答 3

1

您可以使用regexp_substr()

select regexp_substr(name, '[^,]+', 1, 1) as lastname,
       regexp_substr(name, '[^, ]+', 1, 2) as firstname
于 2018-07-24T19:55:07.640 回答
0

可以通过使用instr内部substr函数以经典方式执行,如下所示:

select substr(fullname,1,instr(fullname,',')-1) Firstname,
       substr(fullname,instr(fullname,',')+1,length(fullname)) Lastname
  from tab;

SQL 小提琴演示

于 2018-07-24T21:09:41.740 回答
0

第二个参数SUBSTR()是子串的位置,第三个参数是子串的长度。如果您在此处使用字符串而不是数字,它将不会自动搜索分隔符。您可以使用它LOCATE()来找到您想要的职位。

SUBSTR(Fullname, 1, LOCATE(Fullname, ',')-1) AS Lastname,
SUBSTR(Fullname, LOCATE(Fullname, ',')+1) AS Firstname
于 2018-07-24T19:57:30.110 回答