- 浏览: 285790 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
bglmmz:
zhangmingming_zmm001 写道我改成这个样子了 ...
mybatis 插入时返回刚插入记录的主键值 -
Bll:
怎么刷新了项目之后,搜索还是出现这个错误……
全局搜索的时候报错problems encountered during text search -
三市白衣:
Select Substring(@S1,CHARINDEX( ...
oracle substr、instr -
vem:
thanks,原来这么简单就可以。。。。
全局搜索的时候报错problems encountered during text search -
tianbrave:
谢谢!
myeclipse 中相同变量,高亮显示
replace就是一般意义上的字符串替换
replace(c1,c2[,c3]) 在字符串c1中找到字符串c2,替换成c3. 若c3为空,则在c1中删除所有c2. 例:update articledoi set local_url=replace( (select local_url from articledoi where id=311) , ' :8888/pub ' , ':80 ' ) where id=297;(单行替换)
translate只是一个字符替换对应的一个字符
TRANSLATE ( expr , from_string , to_string ) 简单的说就是对expr内容,用to_string中的字符逐一替换from_string 中的字符,举例说明如下: SQL> select translate('123456789','456','abc') from dual; TRANSLATE SQL> select translate('123456789','456','ab') from dual; TRANSLAT SQL> select translate('123456789','4564','a') from dual; TRANSLAT SQL> select translate('123456789','4564','abcd') from dual; TRANSLATE 可以看到translate函数是以字符为单位逐一替换的,从第二、三个例子可以看出,如果第三个参数to_string的长度小于第二个参数from_string,那么from_string的后边超出的部分都被替换为空值。从第三、四个例子可见,如果某一个字符多次出现,则以第一次替换的内容为准。 以此可以实现的一个有用的功能是统计一个字符串中某个字符出现的次数: select length(translate('expl','x'||'expl','x')) from dual 简要比较: replace 字符串级别的代替 如:SELECT REPLACE('accd','cd','ef') from dual; --> aefd translate 字符级别的代替 如:select translate('acdd','cd','ef') from dual; -->aeff 分别详解 replace: 语法:REPLACE(char,search_string[,replacement_string]) 解释:replace中,每个search_string都被replacement_string所代替 select replace('acdd','cd','ef') from dual; --> aefd 如果replacement_string为空或为null,那么所有的search_string都被移除 select replace('acdd','cd','') from dual; --> ad 如果search_string 为null,那么就返回原来的char select replace('acdd','ef') from dual; -->acdd select replace('acdd','','') from dual; -->acdd(也是两者都为空的情况) translate: 语法:TRANSLATE('char','from_string','to_string') 解释:translate中,每个from_string中的字符被to_string中 举例说明: Sql代码 SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual; TRANSL Sql代码 结果:11a21s2 translate的主要作用是提取,替换字符串,其作用有时候和replace差不多.具体看下面的例子 Sql代码 利用TRANSLATE实现关键字的过滤 比如要将“深圳”、“北京”等作为关键词语,在显示内容是要将这些词语过滤掉不显示: SQL> select TRANSLATE('上海北京天津重庆广州深圳武汉','深圳北京','XXXX') from dual; SQL> select replace(TRANSLATE('上海北京天津重庆广州深圳武汉','深圳北京','XXXX'),'X') from dual; SQL> --但是,用TRANSLATE是以一个字符为单位的,只要匹配到都会转换。比如不管“北”和“京”是否连接在一起都会做转换 另外,一个汉字作为一个字符还是两个字符进行转换与字符集的设置相关。
---------
123abc789
--------
123ab789
-------
123a789
---------
123abc789
SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual; TRANSLATE (
--------------
123456ghij
SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual; TRANSL
----------
123456
SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual; TRANSLATE (
--------------
123456ghij
----------
123456
select TRANSLATE('kkaxksx', 'kx', '12') from dual
结果:11a21s2
select TRANSLATE('kkaxksx', 'kx', '12') from dual
translate中有“#”的特殊用法,以#开头的表示所有字符
select translate('liyan4h123ui','#liyanhui','#') from dual
结果:4123
select translate('liyan4h123ui','#liyanhui','#z') from dual;
结果:z4123
select translate('liyan4h123ui','#liyanhui','#zx') from dual;
结果:zx4123x
select translate('asadad434323', '#0123456789','#') from dual ;
结果:asadad
select translate('liyan4h123ui','#liyanhui','#') from dual
结果:4123
select translate('liyan4h123ui','#liyanhui','#z') from dual;
结果:z4123
select translate('liyan4h123ui','#liyanhui','#zx') from dual;
结果:zx4123x
select translate('asadad434323', '#0123456789','#') from dual ;
结果:asadad
有时候需要对一些关键词语进行过滤,直接使用replace的话,可能由于这些关键词语比较多而要嵌套使用,语句也不好写,同时也浪费资源。这种情况其实可以使用TRANSLATE和replace组合使用就能完全达到目的了。
Sql代码
--首先使用TRANSLATE将关键词语统一转换成一个特殊的字符串,比如这里的X
SQL> select TRANSLATE('上海北京天津重庆广州深圳武汉','深圳北京','XXXX') from dual;
TRANSLATE('上海北京天津重庆广?
------------------------------
上海XX天津重庆广州XX武汉
--然后用replace将特殊的字符串替换掉。注意:不能用TRANSLATE直接将关键词语直接转换为''字符串
SQL> select replace(TRANSLATE('上海北京天津重庆广州深圳武汉','深圳北京','XXXX'),'X') from dual;
REPLACE(TRANSLATE('上海北京天?
------------------------------
上海天津重庆广州武汉
SQL> --但是,用TRANSLATE是以一个字符为单位的,只要匹配到都会转换。比如不管“北”和“京”是否连接在一起都会做转换
SQL> select TRANSLATE('上海京天津重庆北广州深圳武汉','深圳北京','XXXX') from dual;
TRANSLATE('上海京天津重庆北广?
------------------------------
上海X天津重庆X广州XX武汉
--首先使用TRANSLATE将关键词语统一转换成一个特殊的字符串,比如这里的X
TRANSLATE('上海北京天津重庆广?
------------------------------
上海XX天津重庆广州XX武汉
--然后用replace将特殊的字符串替换掉。注意:不能用TRANSLATE直接将关键词语直接转换为''字符串
REPLACE(TRANSLATE('上海北京天?
------------------------------
上海天津重庆广州武汉
SQL> select TRANSLATE('上海京天津重庆北广州深圳武汉','深圳北京','XXXX') from dual;
TRANSLATE('上海京天津重庆北广?
------------------------------
上海X天津重庆X广州XX武汉
补充:TRANSLATE(string,from,to)转换的两个注意点——
1、转换源字串(from)在目的字串(to)中不存在对应,则转换后被截除
2、转换目的字串(to)不能为'',''在oracle中被视为空值,因此无法匹配而返回为空值
发表评论
-
oracle substr、instr
2011-12-07 22:04 2947substr Oracle中的截 ... -
Oracle DECODE函数
2011-11-28 14:54 981Oracle DECODE函数功能很强 ... -
oracle中nvl()函数
2011-11-28 14:09 1204oracle的nvl函数的用法 ... -
oracle case when else 语法和用法
2011-11-28 14:05 1300case when else 基本结构: case n ... -
常用的命令及语句
2011-11-14 21:46 744insert /*+ append */ into 表1 no ... -
查询oracle分区表存在多少个分区
2011-11-01 16:52 1352SELECT * FROM useR_TAB_PARTITIO ... -
oracle IMP-00008 错误
2011-11-01 16:49 1654IMP-00008错误 可以通过在imp指令中指定buffe ... -
oracle在删除表空间之前删除了文件,造成不能删除用户
2011-10-28 17:55 1560oracle在删除表空间之前删除了文件,造成不能删除用户 ... -
启动/关闭linux下的oracle
2011-10-28 09:48 756启动 lsnrctl start su - oracle s ... -
修改sequence
2011-10-27 09:55 769alter sequence test_SEQ increme ... -
oracle把一个用户的权限赋给另一个用户
2011-10-27 09:42 9444在plsql中的command window下输入ed,输入以 ... -
修改 oracle xe 默认中文字符集成为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
2011-10-24 09:37 14597修改 oracle xe 默认中文 ... -
Invalid number format for port number
2011-09-28 16:28 4430java.sql.SQLException: Io 异常: I ... -
oracle OracleDBConsoleorcl 服务
2011-09-18 14:10 1123oracle 的OracleDBConsoleorcl 服务经 ... -
查看oracle所有的表空间
2011-09-16 10:50 871select dbf.tablespace_name,dbf. ... -
Oracle的一些基本命令
2011-09-15 21:49 751用户sys/123qwe,system/qwe123QWE,s ... -
oracle 数据库锁相关查询及操作
2011-09-08 23:00 924select a.object_name||'|'||b.se ... -
查询oracle数据库进程锁
2011-09-08 22:58 1227DECLARE TYPE my_session_ ... -
分区表的一些操作
2011-09-06 21:22 907一、创建表空间 create tablespace diny ... -
数据库操作的一些命令
2011-09-06 20:42 7441、删除用户 drop user username casca ...
相关推荐
ORACLE replace和translate函数详解
今天看了SQL COOKBOOK中的一个例子,其中看到了两个函数Replace和Translate时产生了疑惑,感觉这两个函数的作用是一样的,书上面的例子也看的不是很明白,Google了一下,看了Oracle的官方解释,终于彻底明白了。...
translate函数语法: translate(expr, from_strimg, to_string) 简介: translate返回expr,其中from_string中的每个字符的所有出现都被to_string中的相应字符替换。expr中不在from_string中的字符不会被替换。如果...
13.oracle函数 26 (1)字符函数 26 (2)数学函数 26 (3)日期函数 27 (4)给表取别名的时候,不能加as;但是给列取别名,是可以加as 27 (5)转换函数 27 (6) to_char(date,'format') 27 (7) to_date(string,'format') 28 ...
TRANSLATE.................................................................................................... 88 INSTR ....................................................................................
7.5.3 组合两个函数 7.5.4 使用TRIM函数 7.5.5 再次使用填充函数 7.5.6 I.LOWER、UPPER和INITCAP 7.5.7 LENGTH 7.5.8 SUBSTR 7.5.9 INSTR 7.5.1 0ASCII和CHR 7.6 在orderby和where子句中使串函数 7.6.1 SOUNDEX ...
7.5.3 组合两个函数 7.5.4 使用TRIM函数 7.5.5 再次使用填充函数 7.5.6 I.LOWER、UPPER和INITCAP 7.5.7 LENGTH 7.5.8 SUBSTR 7.5.9 INSTR 7.5.1 0ASCII和CHR 7.6 在orderby和where子句中使串函数 7.6.1 SOUNDEX ...
第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...
1 CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2) 2 RETURN NUMBER 3 IS 4 v_str VARCHAR2 (1000); 5 BEGIN 6 IF str IS NULL 7 THEN 8 RETURN 0; 9 ELSE 10 v_str := translate(str, '....
可以在服务器端,也可以在客户端建立,但必须注意,两台服务器之间 数据库必须可以互访,必须各有各自的别名数据库 18、查看数据库链路 select * from all_db_links; select * from user_db_links; 查询 select...
C# 访问Oracle示例+PL/SQL+存储过程+触发器 完整示例 测试可用 --PL/SQL基础1 declare begin dbms_output.('不输出不换行'); dbms_output.put_line('输出并换行'); end; --PL/SQL基础2 declare dig number(20,...
--分组的时候,还可以按照多个字段进行分组,两个字段不相同的为一组 56、select ename from emp where sal = (select max(sal) from emp); --求出 57、select deptno, max(sal) from emp group by deptno; --...
REPLACE 84 SUBSTR85 TRANSLATE88 INSTR 88 LENGTH89 转换函数 89 TO_CHAR90 TO_NUMBER91 其它函数 91 GREATEST 与LEAST 91 USER 92 总结 92 问与答 93 校练场 93 练习 94 第五天SQL 中的子句95 目标 95 WHERE ...