`
raozhiyong11
  • 浏览: 138926 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

Oracle中translate 函数的使用

阅读更多

Oracletranslate 函数的使用

实例:

select   lmark3, translate( t.lmark3, '9876543210' ||t.lmark3, '9876543210')from line_data_all_t t

1

数学一:51

51

2

数学三:100

100

3

大学物理131

131

4

法律硕士联考专业基础115

115

5

数学:191

191

6

国际政治121

121

7

管理学:110

110

8

西医综合155

155

9

护理综合217

217

10

设计学概论130

130

11

西医综合172

172

12

数学:45

45

13

数学:1110

1110

1.translate

语法:TRANSLATE(char, from, to)

用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。
           
fromto字符串长,那么在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));


2.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'


总结:综上所述,replacetranslate都是替代函数,
         
只不过replace针对的是字符串,而translate针对的是单个字符。

 

 

---------------------------------------------------------------------------------------------------------------------------------------------------------

我们在实际工作中,经常用到的去掉汉字保留数字或字母,也有可能是去掉数字或字母,保留汉字。
本文将用oracle sql tranlsate函数实现去掉汉字、保留数字;去掉数字和母、保留汉字,本文所用到sql如下:
 
create table oracle_extract_number (
id number,
name varchar2(50)
);
 
insert into oracle_extract_number(id,name)  values(1,'32提取汉字中11222的333数44411字11');
insert into oracle_extract_number(id,name)  values(1,'ad提取汉字中11dddfw222的3ddd33数444dd11字11');
insert into oracle_extract_number(id,name)  values(1,'abd2提取汉字中11222的333数44ddd411字11');
insert into oracle_extract_number(id,name)  values(1,'45提取汉233字中1ddd1222ddd的333数44411字11');
insert into oracle_extract_number(id,name)  values(1,'78提取汉字中112SDD22的33ddad3数44ddfdf411字11');
 
commit;
1.用oracle translate去掉汉字和字母,提取数字
 
dw@dw>select id,name,
  2         translate(name, '#' ||
  3           translate(name, '0123456789', '#'), '/') "oracle extract number"
  4    from oracle_extract_number;
 
        ID NAME                                               oracle extract number
---------- -------------------------------------------------- ------------------------------
         1 32提取汉字中11222的333数44411字11                  32112223334441111
         2 ad提取汉字中11dddfw222的3ddd33数444dd11字11        112223334441111
         3 abd2提取汉字中11222的333数44ddd411字11             2112223334441111
         4 45提取汉233字中1ddd1222ddd的333数44411字11         45233112223334441111
         5 78提取汉字中112SDD22的33ddad3数44ddfdf411字11      78112223334441111
 
已选择5行。
 
已用时间:  00: 00: 00.03
2.用oracle translate去掉汉字,提取数字和字母
 
dw@dw>select id,name,
  2  translate(name,'#'||
  3  translate(name,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789','#')
  4  ,'/')  "oracle extract number"
  5  from oracle_extract_number;
 
        ID NAME                                               oracle extract number
---------- -------------------------------------------------- ------------------------------
         1 32提取汉字中11222的333数44411字11                  32112223334441111
         2 ad提取汉字中11dddfw222的3ddd33数444dd11字11        ad11dddfw2223ddd33444dd1111
         3 abd2提取汉字中11222的333数44ddd411字11             abd21122233344ddd41111
         4 45提取汉233字中1ddd1222ddd的333数44411字11         452331ddd1222ddd3334441111
         5 78提取汉字中112SDD22的33ddad3数44ddfdf411字11      78112SDD2233ddad344ddfdf41111
 
已选择5行。
 
已用时间:  00: 00: 00.00
3.用oracle translate去掉数字和字母,提取汉字
 
dw@dw>select id,
  2         name,
  3         translate(name,
  4                   '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
  5                   '/') "oracle extract number"
  6    from oracle_extract_number;
 
        ID NAME                                               oracle extract number
---------- -------------------------------------------------- ---------------------------
         1 32提取汉字中11222的333数44411字11                  提取汉字中的数字
         2 ad提取汉字中11dddfw222的3ddd33数444dd11字11        提取汉字中的数字
         3 abd2提取汉字中11222的333数44ddd411字11             提取汉字中的数字
         4 45提取汉233字中1ddd1222ddd的333数44411字11         提取汉字中的数字
         5 78提取汉字中112SDD22的33ddad3数44ddfdf411字11      提取汉字中的数字
 
已选择5行。
 

 

已用时间:  00: 00: 00.01
分享到:
评论

相关推荐

    SQL Sserver 实现oracle translate函数

    SQL Sserver 实现oracle translate函数

    ORACLE replace和translate函数详解

    ### ORACLE `replace` 和 `translate` 函数详解 在Oracle数据库中,处理字符串是非常常见的需求之一。为了更好地管理和操作数据,Oracle提供了多种内置函数来帮助我们实现这一目标。其中两个常用的函数是 `replace`...

    oracle系统内置函数大全

    17. TRANSLATE函数:替换字符串中的指定字符集为另一个指定字符集。 18. TRIM函数:删除字符串的前后指定字符集。 19. UPPER函数:将字符串中的所有字符转换为大写。 数字函数 1. ABS函数:返回一个数字的绝对值。 ...

    Oracle中的translate函数和replace函数的用法详解

    **translate函数** `translate`函数的主要作用是在一个字符串`expr`中,将`from_string`中的每个字符替换为`to_string`中相应位置的字符。其基本语法如下: ```sql translate(expr, from_string, to_string) ``` ...

    Oracle 基础语句 函数大全(字符串函数

    了解并熟练使用这些函数,能帮助你在Oracle数据库中更高效地进行字符串处理,无论是数据分析、报表生成还是业务逻辑实现。在实际应用中,可以根据需求灵活组合这些函数,以满足各种复杂的字符串操作需求。

    oracle系统内置函数

    以上总结了Oracle系统内置字符函数的主要功能及其语法和使用示例。这些函数在处理文本数据时非常有用,可以帮助开发者轻松地执行字符串操作任务。接下来,我们将继续探讨其他类别的内置函数,如数字函数、日期函数等...

    Oracle 函数replace和translate的比较

    在 Oracle 数据库中,`REPLACE` 和 `TRANSLATE` 都是字符串处理函数,但它们在功能和使用上存在显著的区别。首先,我们来详细了解这两个函数。 **REPLACE 函数** `REPLACE` 函数的主要作用是将源字符串(char)中...

    oracle函数大全,oracle函数大全,

    除此之外,Oracle还有其他很多功能强大的函数,如TRIM(同时去除字符串两侧的指定字符)、TRANSLATE(替换字符串中的一组字符为另一组字符)、REVERSE(反转字符串)等。这些函数在SQL查询和数据处理中发挥着重要...

    Oracle常用函数.txt

    例如,在查询中使用 `WHERE LOWER(colorname) LIKE '%white%'` 可以不区分大小写地搜索包含 "white" 的颜色名称。 ### INSTR() 和 INSTRB() - **INSTR()** 函数用于查找一个字符串在另一个字符串中的位置。它接受...

    ORACLE内部函数大全以及与SQLSERVER的区别

    - `CONCAT`:在 Oracle 中,字符串连接通常使用 `+` 操作符,而在 SQL Server 中则使用 `CONCAT` 函数。 - `LOWER/UPPER`:两个系统都提供了将字符串转换为小写或大写的函数。 - `LPAD/RPAD`: Oracle 提供这些...

    Oracle常用函数.pdf

    ### Oracle常用函数详解 ...掌握这些函数的使用方法,不仅能够提高 SQL 语句的编写效率,还能确保查询结果的准确性。在实际应用中,合理选择合适的函数,结合实际情况灵活运用,将极大提升数据处理的能力和效率。

    Oracle函数大全.pdf

    在Oracle数据库中,函数是一类预定...以上内容涵盖了Oracle中常见的函数及其用途,学习和掌握这些函数对于有效地使用Oracle数据库至关重要。在实际应用中,根据需要选择合适的函数可以大大提高查询效率和数据处理能力。

    ORACLE与SQLSERVER函数异同比较

    - **日期间隔**: Oracle中使用`MONTHS_BETWEEN`函数计算两个日期之间的间隔,在SQL Server中使用`DATEDIFF`函数。 - **当前日期时间**: Oracle中的`SYSDATE`函数与SQL Server中的`GETDATE()`函数相对应。 - **月份...

    oracle数据库常用的函数

    以下是一些在实际开发过程中经常使用的Oracle数据库函数的详细介绍。 #### 数学函数 1. **ABS**: 返回一个数值的绝对值。 - 示例: `SELECT ABS(-3.12) FROM DUAL;` 返回结果为 `3.12`。 2. **ACOS**: 返回指定...

    ORACLE 数据类型及常用函数培训

    Oracle 数据库是世界上最广泛使用的数据库管理系统之一,它拥有丰富的数据类型和函数,使得开发者能够高效地处理各种数据。以下是对标题和描述中提及的Oracle数据类型及常用函数的详细讲解。 **一、Oracle数据类型*...

    oracle常用函数功能演示

    字符处理函数在Oracle中尤为重要,如`INITCAP`用于首字母大写,`UPPER`和`LOWER`用于全角和半角字符的转换,`CONCAT`或`||`用于字符串拼接,`ASCII`和`CHR`则分别用于获取字符的ASCII码和根据编码创建字符。...

    oracle内置SQL函数.ppt

    我们来详细了解一下这些函数中的一些常见代表。 1. 字符函数: - CHR:通过ASCII码值返回对应的字符。例如,CHR(54740)返回“赵”,它与ASCII函数形成互逆关系。 - CONCAT:连接两个或多个字符串。如CONCAT('010-...

    ORACLE常用函数功能演示

    Oracle数据库系统内置了大量的函数,这些函数为数据库编程提供了极大的便利,因为它们是由Oracle公司的专家编写的,内嵌在数据库系统中,执行效率非常高。利用这些函数,开发者可以编写出更高效、更简洁的代码,从而...

Global site tag (gtag.js) - Google Analytics