substr错误-ORA-01722:无效的数字分隔字符串

时间:2018-07-24 19:53:05

标签: sql oracle substr ora-01722

我正在尝试将名字和姓氏分开。我有一列名为“ Fullname”(全名),并且在同一列中都有名字和姓氏以及逗号。我尝试了以下操作,但出现错误“其无效数字”。当我删除逗号时,它可以工作,因此我不确定如何在公式中加入逗号,以便它可以工作。

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

Column 

Fullname
Brown,John N
Green,Julie T


Desired results
Lastname    FirstName
Brown        John
Green        Julie

3 个答案:

答案 0 :(得分:1)

您可以使用regexp_substr()

select regexp_substr(name, '[^,]+', 1, 1) as lastname,
       regexp_substr(name, '[^, ]+', 1, 2) as firstname

答案 1 :(得分:0)

SUBSTR()的第二个参数是子字符串的位置,第三个参数是子字符串的长度。如果您在此处使用字符串而不是数字,它将不会自动搜索定界符。您可以使用LOCATE()查找所需的职位。

SUBSTR(Fullname, 1, LOCATE(Fullname, ',')-1) AS Lastname,
SUBSTR(Fullname, LOCATE(Fullname, ',')+1) AS Firstname

答案 2 :(得分:0)

在以下情况下,可以使用email_addresses = ["foo@bar.com", "baz@far.com"] p = Popen(["/usr/sbin/sendmail", "-f", "author@company.com", ",".join(email_addresses)] , stdin=PIPE) 函数内的instr以经典方式执行:

substr

SQL Fiddle Demo