如何在 Oracle 11G 中正确使用 SUBSTR、INSTR 和/或 REPLACE
How to correctly use SUBSTR, INSTR and or REPLACE in Oracle 11G
我想做的是获取第三个字符串。在这个例子中:
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获取第一个示例的声明
select generateISIN('NL','TUE', '123456789') from dual;
这是我的第二个 select 将字符串转换为数字的语句(没有将代码循环放在这里)
select CONVERT_STR_TO_NUMERIC(generateISIN('NL','TUE', '123456789')) from dual;
要是问的还不算过分。请给我一个我给定问题的例子
希望我的问题不要太含糊
提前致谢
如果您想使用 INSTR
and SUBSTR
,请按照以下步骤操作:
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','(.+) (.+) (.+)',' ')
FROM dual;
我想做的是获取第三个字符串。在这个例子中:
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获取第一个示例的声明
select generateISIN('NL','TUE', '123456789') from dual;
这是我的第二个 select 将字符串转换为数字的语句(没有将代码循环放在这里)
select CONVERT_STR_TO_NUMERIC(generateISIN('NL','TUE', '123456789')) from dual;
要是问的还不算过分。请给我一个我给定问题的例子
希望我的问题不要太含糊
提前致谢
如果您想使用 INSTR
and SUBSTR
,请按照以下步骤操作:
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','(.+) (.+) (.+)',' ')
FROM dual;