【总结】Oracle sql 中的字符(串)替换与转换
来源:互联网 发布:淘宝网店书籍推荐 编辑:程序博客网 时间:2024/05/01 04:17
1、REPLACE
语法:REPLACE(char, search_string,replacement_string)
用法:将char中的字符串search_string全部转换为字符串replacement_string。
举例:SQL> select REPLACE('fgsgswsgs', 'fk' ,'j') 返回值 from dual;
返回值
---------
fgsgswsgs
SQL> select REPLACE('fgsgswsgs', 'sg' ,'eeerrrttt') 返回值 from dual;
返回值
-----------------------
fgeeerrrtttsweeerrrttts
分析:第一个例子中由于'fgsgswsgs'中没有与'fk'匹配的字符串,故返回值仍然是'fgsgswsgs';
第二个例子中将'fgsgswsgs'中的字符串'sg'全部转换为'eeerrrttt'。
2、TRANSLATE
语法:TRANSLATE(char, from, to)
用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。
若from比to字符串长,那么在from中比to中多出的字符将会被删除。
三个参数中有一个是空,返回值也将是空值。
举例:SQL> select translate('abcdefga','abc','wo') 返回值 from dual;
返回值
-------
wodefgw
分析:该语句要将'abcdefga'中的'abc'转换为'wo',
由于'abc'中'a'对应'wo'中的'w',故将'abcdefga'中的'a'全部转换成'w';
而'abc'中'b'对应'wo'中的'o',故将'abcdefga'中的'b'全部转换成'o';
'abc'中的'c'在'wo'中没有与之对应的字符,故将'abcdefga'中的'c'全部删除;
简单说来,就是将from中的字符转换为to中与之位置对应的字符,若to中找不到与之对应的字符,返回值中的该字符将会被删除。
在实际的业务中,可以用来删除一些异常数据,比如表a中的一个字段t_no表示电话号码,而电话号码本身应该是一个由数字组成的字符串,为了删除那些含有非数字的异常数据,就用到了translate函数:
举例:SQL> delete from a
where length(translate(trim(a.t_no),
'0123456789' || a.t_no,
'0123456789')) <> length(trim(a.t_no));
3、DECODE
语法:DECODE(expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)
DECODE(expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)
用法:比较表达式和搜索字,如果匹配,返回结果;
如果不匹配,返回default值;
如果未定义default值,则返回空值。
含义如下:
IF expression=search_1 THEN
RETURN(result_1);
ELSE IF expression=search_2 THEN
RETURN(result_2);
......
ELSE IF expression=search_n THEN
RETURN(result_n);
ELSE
IF ISEXIXT(default)
RETURN(default);
ELSE
RETURN(NULL);
END IF;
举例:SQL> select checkup_person 投票人,
decode(checkup_result,’Y’,’赞同票’,’N’,’反对票’,NULL,’弃权票’,’无效票’) 投票结果
FROM checkup;
分析:该语句要checkup表中的checkup_result字段进行翻译,
将‘Y’翻译为‘赞同票’;
将’N’翻译为’反对票’;
将NULL翻译为’弃权票’;
默认值是’无效票’。
4、Oracle 格式化函数 to_char To_date To_number
格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。
注意:所有格式化函数的第二个参数是用于转换的模板。
4-1、格式化函数
4-2、用于 date/time 转换的模板
(所有模板都都允许使用前缀和后缀修改器。模板里总是允许使用修改器。前缀 'FX' 只是一个全局修改器)
4-3、用于日期/时间模板 to_char() 的后缀
用法须知:
a、如果没有使用 FX 选项,to_timestamp 和 to_date 忽略空白。FX 必须做为模板里的第一个条目声明。
b、反斜杠("\")必须用做双反斜杠("\\"),例如 '\\HH\\MI\\SS'。
c、双引号('"')之间的字串被忽略并且不被分析。如果你想向输出写双引号,你必须在双引号前面放置一个双反斜杠('\\'),例如 '\\"YYYY Month\\"'。
d、to_char 支持不带前导双引号('"')的文本,但是在双引号之间的任何字串会被迅速处理并且还保证不会被当作模板关键字解释(例如:'"Hello Year: "YYYY')。
4-4、用于 to_char(numeric) 的模板
用法须知:
a、使用 'SG','PL' 或 'MI' 的带符号字并不附着在数字上面;例如,to_char(-12, 'S9999') 生成 ' -12',而 to_char(-12, 'MI9999') 生成 '- 12'。Oracle里的实现不允许在 9 前面使用 MI,而是要求 9 在 MI 前面。
b、PL,SG,和 TH 是
c、9 表明一个与在 9 字串里面的一样的数字位数。如果没有可用的数字,那么使用一个空白(空格)。
d、TH 不转换小于零的值,也不转换小数。TH 是一个
e、V 方便地把输入值乘以 10^n,这里 n 是跟在 V 后面的数字。to_char 不支持把 V 与一个小数点绑在一起使用(例如. "99.9V99" 是不允许的)。
4-5、to_char 例子
注意:
1.在使用Oracle的to_date函数来做日期转换时,可能会直觉地采用“yyyy-MM-dd HH:mm:ss”的格式作为格式进行转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
2.另要以24小时的形式显示出来要用HH24
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显示月份
5、正则表达式转换(待续......)
出处:http://blog.csdn.net/folio/article/details/7010976
- 【总结】Oracle sql 中的字符(串)替换与转换
- 【总结】Oracle sql 中的字符(串)替换与转换
- 【总结】Oracle sql 中的字符(串)替换与转换
- 【Oracle】 sql 中的字符(串)替换与转换
- oracle中的字符替换
- Oracle 批量替换字段中的字符
- Oracle 批量替换字段中的字符
- SQL中的REPLACE替换字符函数
- sql语句 替换列中的指定字符
- 替换SQL字段中的指定字符
- sql中替换字段中的某个字符
- sql批量替换字段中的某个字符
- C语言中的字符替换与截取
- Oracle中的SQL总结
- Sql之Oracle中的正则替换regexp_replace
- Oracle 10g中的转换函数与SQL单行函数
- oracle中的sql语句中timestamp与字符串转换
- Oracle将字符串转换为数字,并替换特殊字符
- Dynamics CRM 2013 subgrid刷新后刷新主表单
- 线段树学习
- git常用命令
- flex 4.6 安装小结
- JS截取字符串substr 和 substring方法的区别
- 【总结】Oracle sql 中的字符(串)替换与转换
- Linux常用shell命令
- Android中的Environment.getExternalStorageState使用
- 临界区,互斥量,信号量,事件多线程总结
- 【面试准备】字符串反序
- SEO在未来的发展是否会变更方向
- IOCP十:Client退出后投递WSARecv
- c#的 UDP接收
- 将大型 Page Blob 的页范围进行分段