select replace('ABC*DDD','*','')||'*' x from dual;
有,不过是oracle 10g才有。
1.select replace('ABC*DDD','*','')||'*' x from dual;2.select (substr('ABC*DDD',1,instr('ABC*DDD','*')-1))|| substr('ABC*DDD',instr('ABC*DDD','*')+1,length('ABC*DDD'))||'*' x from dual
谢谢 chanet & gw_delphi,我的问题主要在于有没类似正则表达式这样的东西。
faint,我已经告诉你有,不过是oracle 10g才有了。
谢谢AFIC,我之前已经看到了。具体怎么使用的?虽然我装的是9i
首先我想你也知道,这是10g的新功能,9i没有的, 新增了4个函数 REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和 REGEXP_REPLACE 其中REGEXP_REPLACE就是你想要得 REGEXP_REPLACE 返回初始参数被匹配子串替换之后的结果。例如:SELECT REGEXP_REPLACE('The temperature is 23°F','([[:digit:]])+°F',('\1'-32)*5/9||'°C')FROM DUAL; 这个查询将查找一个华氏温度并将其转换为摄氏度。它将返回:'The temperature is -5°C'。POSIX 正则表达式由标准的元字符(metacharacters)所构成:'^' 表示字符串的开始 '$' 表示字符串的结束 '.' 表示任何字符 字符的范围,比如说'[a-z]',表示任何ASCII 小写字母,与字符类"[[:lower:]]"" 等价 '?' 允许一个后继字符匹配零次或一次 '+' 允许一个后继字符匹配一次或多次 '*' 表示零次或多次 还有一些,不写了。
substr('ABC*DDD',instr('ABC*DDD','*')+1,length('ABC*DDD'))||'*' x from dual
新增了4个函数
REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和 REGEXP_REPLACE
其中REGEXP_REPLACE就是你想要得
REGEXP_REPLACE 返回初始参数被匹配子串替换之后的结果。例如:SELECT REGEXP_REPLACE('The temperature is 23°F','([[:digit:]])+°F',('\1'-32)*5/9||'°C')FROM DUAL; 这个查询将查找一个华氏温度并将其转换为摄氏度。它将返回:'The temperature is -5°C'。POSIX 正则表达式由标准的元字符(metacharacters)所构成:'^' 表示字符串的开始
'$' 表示字符串的结束
'.' 表示任何字符
字符的范围,比如说'[a-z]',表示任何ASCII 小写字母,与字符类"[[:lower:]]"" 等价
'?' 允许一个后继字符匹配零次或一次
'+' 允许一个后继字符匹配一次或多次
'*' 表示零次或多次
还有一些,不写了。