如何在Oracle 11g中正确使用substr,instr和或替换



我想做的就是获得第三个字符串。在此示例中:

NL 123456789 TUE

在此示例中已更改为一个数字:

2927 123456789 353620

被放在后面。因此在" 2927"后面。我想知道该怎么做?我目前获得此字符串的代码是:

CREATE OR REPLACE FUNCTION generateISIN(
  countryCode Country.Code%TYPE,
  universityCode University.Code%TYPE,
  studentNumber VARCHAR2)
RETURN VARCHAR2
AS
  newStudentNumber VARCHAR2(50) := '';
BEGIN
 select country.code || ' ' || studentNumber || ' ' || university.code
 into newStudentNumber
 from country, university
 where country.code = countryCode
 and university.code = universityCode;
  dbms_output.put_line(newStudentNumber);
  RETURN newStudentNumber;
END generateISIN;
/

这是我获得第一个示例

的选择语句
select generateISIN('NL','TUE', '123456789') from dual;

这是我的第二个选择语句,将字符串变成数字(没有将代码循环放入此处)

select CONVERT_STR_TO_NUMERIC(generateISIN('NL','TUE', '123456789')) from dual;

如果不是太多要问。请为我提供一个给定问题的例子

我希望我的问题不会太模糊

预先感谢

如果要使用 INSTRSUBSTR,则应以下操作:

SELECT SUBSTR (x, INSTR(x, ' ', 1, 2) +1) || ' ' ||
       SUBSTR (x, 1, INSTR(x, ' ') -1)    || ' ' ||
       SUBSTR (x, INSTR(x, ' ') +1, INSTR(x, ' ', 1, 2) -INSTR(x, ' '))
 FROM (SELECT 'NL 123456789 TUE' x 
         FROM dual);

尽管我宁愿使用oracle regexp_replace

SELECT regexp_replace('NL 123456789 TUE','(.+) (.+) (.+)','3 1 2')
  FROM dual;

在此处检查SQL小提琴。

最新更新