我想做的是获得第三个字符串。在这个例子中:
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语句,它将字符串转换为数字(没有把代码循环放在这里)
select CONVERT_STR_TO_NUMERIC(generateISIN('NL','TUE', '123456789')) from dual;
如果要问的话不是太多。请给我一个我遇到问题的例子
我希望我的问题不是太模糊
提前致谢
答案 0 :(得分:2)
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;