简要比较:
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中
举例说明:
SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual; TRANSLATE (
--------------
123456ghij
SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual; TRANSL
----------
123456
select TRANSLATE('kkaxksx', 'kx', '12') from dual
结果:11a21s2
translate中有“#”的特殊用法,以#开头的表示所有字符
translate的主要作用是提取,替换字符串,其作用有时候和replace差不多.具体看下面的例子
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
利用TRANSLATE实现关键字的过滤
有时候需要对一些关键词语进行过滤,直接使用replace的话,可能由于这些关键词语比较多而要嵌套使用,语句也不好写,同时也浪费资源。这种情况其实可以使用TRANSLATE和replace组合使用就能完全达到目的了。
比如要将“深圳”、“北京”等作为关键词语,在显示内容是要将这些词语过滤掉不显示:
--首先使用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(string,from,to)转换的两个注意点——
1、转换源字串(from)在目的字串(to)中不存在对应,则转换后被截除
2、转换目的字串(to)不能为'',''在oracle中被视为空值,因此无法匹配而返回为空值
另外,一个汉字作为一个字符还是两个字符进行转换与字符集的设置相关。
分享到:
相关推荐
### ORACLE `replace` 和 `translate` 函数详解 在Oracle数据库中,处理字符串是非常常见的需求之一。为了更好地管理和操作数据,Oracle提供了多种内置函数来帮助我们实现这一目标。其中两个常用的函数是 `replace`...
在 Oracle 数据库中,`REPLACE` 和 `TRANSLATE` 都是字符串处理函数,但它们在功能和使用上存在显著的区别。首先,我们来详细了解这两个函数。 **REPLACE 函数** `REPLACE` 函数的主要作用是将源字符串(char)中...
**replace函数** `replace`函数则较为简单,它用于在字符串`char`中将所有出现的`search_string`替换为`replacement_string`。其语法如下: ```sql REPLACE(char, search_string, replacement_string) ``` - `...
在IT领域,尤其是在数据库管理与查询方面,Oracle作为业界领先的关系型数据库管理系统之一,提供了丰富的内置函数,以支持数据处理、分析和检索的各种需求。以下是从“Oracle常用函数.txt”文件中提炼出的关键知识点...
### Oracle常用函数详解 #### 一、概述 Oracle 数据库提供了丰富的内置函数,极大地提高了 SQL 语句在处理数据时的灵活性与效率。这些函数主要分为两大类:单行函数和多行函数(也称为聚合函数)。单行函数通常...
10. REPLACE函数:替换字符串中指定字符集的内容为另一个指定内容。 11. RPAD函数:使用指定字符集,在字符串的右侧填充,直到达到指定长度。 12. LPAD函数:与RPAD类似,但填充发生在字符串的左侧。 13. RTRIM函数...
除此之外,Oracle还有其他很多功能强大的函数,如TRIM(同时去除字符串两侧的指定字符)、TRANSLATE(替换字符串中的一组字符为另一组字符)、REVERSE(反转字符串)等。这些函数在SQL查询和数据处理中发挥着重要...
16. **TRANSLATE** 函数:将字符串中的某些字符替换为其他字符,如 `TRANSLATE('ABCDefghijklmn', 'eg', '替代')` 替换'e'和'g'。 了解并熟练使用这些函数,能帮助你在Oracle数据库中更高效地进行字符串处理,无论...
- **其他**:LENGTH(获取字符串长度)、SUBSTR(截取子字符串)、INSTR(查找子字符串位置)、REPLACE(替换子字符串)、TRANSLATE(字符转换)。 **3. 日期函数** 日期函数帮助开发者处理日期和时间的操作: - ...
### ORACLE与SQLSERVER函数异同比较 在数据库领域,Oracle和SQL Server是两种非常流行的数据库管理系统。这两种系统虽然有着不同的背景和发展历程,但都提供了丰富的功能来满足各种业务需求。尤其是在函数支持方面...
此外,Oracle还提供了许多其他类型的函数,例如与环境信息和条件判断相关的函数。 - **dump**: 返回有关列的详细信息。 - **greatest/least**: 返回给定表达式列表中的最大值和最小值。 - **nvl/nvl2**: 在参数为...
`RTRIM`, `TRIM`用于去除字符串两侧的空格或特定字符,`LPAD`和`RPAD`则在字符串两侧填充指定字符或空格,`LENGTH`获取字符串长度,`SUBSTR`用于截取子字符串,`INSTR`查找子串位置,`REPLACE`替换子串,`TRANSLATE`...
Oracle 数据库是世界上最广泛使用的数据库管理系统之一,它拥有丰富的数据类型和函数,使得开发者能够高效地处理各种数据。以下是对标题和描述中提及的Oracle数据类型及常用函数的详细讲解。 **一、Oracle数据类型*...
### Oracle数据库常用函数详解 在Oracle数据库中,各种内置函数为开发者提供了强大的工具来处理不同的数据类型、数学计算以及字符串操作等。以下是一些在实际开发过程中经常使用的Oracle数据库函数的详细介绍。 ##...
### Oracle系统内置函数详解 #### F.1 字符函数 —— 返回字符值 **1. ASCII** - **语法**: `ASCII(charc)` - **功能**: 返回一个字符串的第一个字符的ASCII码,其逆函数是`CHR()`。 - **使用示例**: - `SELECT ...
1. CONCAT: 这个函数用于连接两个或更多字符串,与Oracle中的“||”运算符功能相同。例如,`CONCAT('010-', '8801 8159')`会返回"010-8801 8159"。 2. LENGTH: 此函数返回字符串的字符长度。例如,`LENGTH('Oracle ...