Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何分割记录并显示其特定部分_Sql_Oracle_Plsql - Fatal编程技术网

Sql 如何分割记录并显示其特定部分

Sql 如何分割记录并显示其特定部分,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个4列的表 user_id, user_name, password, full_name 706 , 29682 , 29682 , Nikolay Valeriev Rusanov 707 , 30211 , 30211 , Valentin Ognyanov Karamanchev 当我进行选择时,我只需要显示全名列中的姓氏 查询应返回 user_id, user_name, password, full_name 706

我有一个4列的表

user_id,  user_name,  password,  full_name
706    ,  29682    ,  29682   ,  Nikolay Valeriev Rusanov
707    ,  30211    ,  30211   ,  Valentin Ognyanov Karamanchev
当我进行选择时,我只需要显示全名列中的姓氏

查询应返回

user_id,  user_name,  password,  full_name
706    ,  29682    ,  29682   ,  Rusanov
707    ,  30211    ,  30211   ,  Karamanchev
它们被空间隔开。 我不能使用substr,因为列中的每个记录都有不同的长度,并且我有10000多行

你们能给我一些sql查询怎么做吗。 使用简单的SUBSTR和INSTR:

二,。 使用正则表达式:


@费尔伯特告诉我答案是…非常感谢,完美的答案!非常感谢!你可以把它标出来。
SQL> WITH DATA AS(
  2  SELECT 'Nikolay Valeriev Rusanov' full_name FROM dual UNION ALL
  3  SELECT 'Valentin Ognyanov Karamanchev' FROM dual UNION ALL
  4  SELECT 'no reason' FROM dual)
  5  SELECT SUBSTR(full_name,instr(full_name,' ',-1)+1) last_name
  6  FROM DATA
  7  /

LAST_NAME
-----------------------------
Rusanov
Karamanchev
reason

SQL>
SQL> WITH DATA AS(
  2  SELECT 'Nikolay Valeriev Rusanov' full_name FROM dual UNION ALL
  3  SELECT 'Valentin Ognyanov Karamanchev' FROM dual UNION ALL
  4  SELECT 'no reason' FROM dual)
  5  SELECT regexp_substr (full_name, '\w*$') last_name
  6  FROM DATA
  7  /

LAST_NAME
-----------------------------
Rusanov
Karamanchev
reason

SQL>