将名称解析为“Lastname,FI”Oracle的格式

时间:2017-09-15 13:59:04

标签: sql oracle

我有一个名为“Doe,John”的表格,我需要将其解析为“Doe,J”。我已经编写了一个查询来提取姓氏,但我不知道如何修改它以包含逗号和第一个首字母。

SUBSTR(Table.Name,1,INSTR(Table.Name,',',1,1))

3 个答案:

答案 0 :(得分:2)

使用NVLSUBSTRINSTR的组合。

SELECT NVL(SUBSTR("namefield", 0, INSTR("namefield", ',')+2), "namefield") AS Name
FROM yourtable

输入

Doe, John
Smith, Mark

输出

NAME
Doe, J
Smith, M

SQL小提琴:http://sqlfiddle.com/#!4/e1f467/7/0

答案 1 :(得分:1)

这个怎么样 -

SELECT SUBSTR(Table.Name,1,INSTR(Table.Name,',',1)+2)

答案 2 :(得分:0)

regexp_replace版本,只要根据您的示例数据在字符串中只有一个空格:

select regexp_replace('Doe, John', '(.* .).*', '\1')

\ 1引用括号中字符串的匹配部分,它是包括最后一个空格和后面的字符的所有字符串,忽略其余部分。