将一列中所有的点号改为横线 对表中的一列,如果字段值含有点号(除第1个字符外,即第1个字符可以为点号),则将点号改为横线("-"),如何做呢?谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 select replace('12121212.555.555.555.6666','.','-') from dual; select replace(substr(',12,,,,34',2),',','-') from dual;看看行不行 select substr('1221.22.33.22', 0, instr('1221.22.33.22', '.', 1, 1)) || replace(substr('1221.22.33.22', instr('1221.22.33.22', '.', 1, 1) + 1, instr('1221.22.33.22', '.', -1, 1)), '.', '-') from dual--输出1221.22-33-22 第1个字符外这个第一个字符有歧义,导致了2楼和3楼的理解不同。2楼理解成从该列的第二个位置开始替换,3楼的理解是从第二个 . 开始替换3楼的substr里的第三个参数可以去掉不写大致就是substr 和replace结合使用10g以上的可以用regexp_replace select substr('.123.123.123',1,1)||replace (substr('.123.123.123',2),'.','-') from dual;--把对应的列换掉.123.123.123,表名换掉dual试试。上面的结果:.123-123-123 假设你的字段长度有 20 WITH tmp AS (SELECT '.1232.32.3' AS num FROM dual)SELECT substr(num,1,1)||replace(substr(num,2,20),'.','-') FROM tmp; select TRANSLATE('12121212.555.555.555.6666','.','-') from dual; UPDATE table_testSET col_name = substr(col_name, 1, 1) || REPLACE(substr(col_name, 2), ',', '-'));这里假设表明是:table_test列名是:col_name楼主视具体情况而定! 谢谢楼上的各位。huangyunzeng2008的正是我想用的,但是我运行了他的代码,列中的数据没有被改变,为什么?顺便说一下,REPLACE的最后一个“)”是多余的 新手求解下面的PLSQL语句 一个数据库系统的实现,请行家给分析一下,内有描述 这个过程为什么不能建 这样一个需求一条普通 sql是否能查出来;50分求答案; 跪问sqlplus连接数据库的问题??? oracle如何在字符串中寻找回车符 oracle8i怎么安装不了啊, 怎样才能让数据库不记录日志呢? 有没有日期函数是来计算两个日起相差几个月的? 请教高手一个问题! 初学Oracle,请高手指教! ado 读取oracle number型字段的问题
看看行不行
replace(substr('1221.22.33.22',
instr('1221.22.33.22', '.', 1, 1) + 1,
instr('1221.22.33.22', '.', -1, 1)),
'.',
'-')
from dual
--输出1221.22-33-22
这个第一个字符有歧义,导致了2楼和3楼的理解不同。2楼理解成从该列的第二个位置开始替换,3楼的理解是从第二个 . 开始替换3楼的substr里的第三个参数可以去掉不写大致就是substr 和replace结合使用
10g以上的可以用regexp_replace
上面的结果:.123-123-123
WITH tmp AS (SELECT '.1232.32.3' AS num FROM dual)
SELECT substr(num,1,1)||replace(substr(num,2,20),'.','-') FROM tmp;
SET col_name = substr(col_name, 1, 1) ||
REPLACE(substr(col_name, 2), ',', '-'));
这里假设表明是:table_test
列名是:col_name
楼主视具体情况而定!