`
wangyanlong0107
  • 浏览: 499738 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

oracle中translate函数

阅读更多

    今天做项目时有个需求,自动生成员工工号。工号的生成规则是“前缀”+9+“000001开始的流水号”,如“GS9000001”,而且工号要连续,下一个流水号为“GS9000002”。

    思路,找oracle数据库中员工工号c_code列9后面的字符串,计算最大值,然后+1生成流水号,在前台加上前缀。

 

    SELECT max(to_number(trim(substr(c_code,instr(c_code,'9'))),'9999999')) FROM tb_inf_employee;

 

    可一旦有脏数据,字符不能转成整数类型,max()返回字符对应编码最大的,to_number函数直接出错了。

    因此考虑过滤非数字的字符,上网查了一下,用oracle的translate函数

语法:TRANSLATE(char, from, to)

用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。
      若from比to字符串长,那么在from中比to中多出的字符将会被删除。

 

      三个参数中有一个是空,返回值也将是空值。   

      注意,你不能使用空字符串来作为to_string参数以用来移除char参数中的所有字符,oracle将空字符解释为null,如果这个函数中任何一个参数为null,那么将返回null。可用“#”代替,如translate("123abc他们456","#1234567890","#")->abc他们。     

    网上的例子,用于过滤字符中的非数字部分:

    select translate('23456中国3-00=.,45','0123456789'||'23456中国3-00=.,45','0123456789') from dual;

    pl/sql试了一下输出:2345630045,成功。修改后的sql:

 

SELECT         max(to_number(translate(trim(substr(c_code,instr(c_code,'9'))),'0123456789'||trim(substr(c_code,instr(c_code,'9'))),'0123456789') ,'9999999999999999999'))FROM tb_inf_employee;

 

    疑问,'0123456789'||'23456中国3-00=.,45'不理解,字符串或操作什么意思?上面的sql语句有点太长了,应该如何写好呢?希望高手指点~~

0
2
分享到:
评论

相关推荐

    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 基础语句 函数大全(字符串函数

    16. **TRANSLATE** 函数:将字符串中的某些字符替换为其他字符,如 `TRANSLATE('ABCDefghijklmn', 'eg', '替代')` 替换'e'和'g'。 了解并熟练使用这些函数,能帮助你在Oracle数据库中更高效地进行字符串处理,无论...

    oracle系统内置函数

    ### Oracle系统内置函数详解 #### F.1 字符函数 —— 返回字符值 **1. ASCII** - **语法**: `ASCII(charc)` - **功能**: 返回一个字符串的第一个字符的ASCII码,其逆函数是`CHR()`。 - **使用示例**: - `SELECT ...

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

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

    Oracle 函数replace和translate的比较

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

    Oracle常用函数.txt

    以下是从“Oracle常用函数.txt”文件中提炼出的关键知识点,旨在为初学者提供深入理解与实践的指导。 ### ASCII() 和 CHR() - **ASCII()** 函数用于返回一个字符的ASCII码值。例如,`ASCII('A')` 返回的是65,而 `...

    Oracle常用函数.pdf

    ### Oracle常用函数详解 #### 一、概述 Oracle 数据库提供了丰富的内置函数,极大地提高了 SQL 语句在处理数据时的灵活性与效率。这些函数主要分为两大类:单行函数和多行函数(也称为聚合函数)。单行函数通常...

    Oracle函数大全.pdf

    在Oracle数据库中,函数是一类预定义的子程序,它可以对输入参数执行运算,并返回一个结果值。Oracle提供了一系列的函数,用于处理不同类型的数据,如字符串、数字、日期和时间等。下面按照文档所提供的内容,详细...

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

    - `TRANSLATE`: Oracle 的字符串翻译函数,SQL Server 没有直接对应的功能,但可以通过其他方法实现。 - `LENGTH/LEN/DATELENGTH`: Oracle 使用 `LENGTH` 获取字符串长度,SQL Server 有 `LEN`(用于字符串)和 `...

    ORACLE与SQLSERVER函数异同比较

    - **字符串翻译**: `TRANSLATE`函数在Oracle中用于替换字符串中的字符,SQL Server中没有直接对应的函数。 - **字符串长度**: `LENGTH`函数在Oracle中用于计算字符串长度,在SQL Server中使用`LEN`或`DATALENGTH`...

    oracle数据库常用的函数

    在Oracle数据库中,各种内置函数为开发者提供了强大的工具来处理不同的数据类型、数学计算以及字符串操作等。以下是一些在实际开发过程中经常使用的Oracle数据库函数的详细介绍。 #### 数学函数 1. **ABS**: 返回...

    oracle内置SQL函数.ppt

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

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

    以下是对标题和描述中提及的Oracle数据类型及常用函数的详细讲解。 **一、Oracle数据类型** 1. **字符数据类型** - `Char(n)`:固定长度的字符串,最多可存储n个字符,不足会填充空格。 - `Varchar2(n)`:可变...

    oracle常用函数功能演示

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

    ORACLE常用函数功能演示

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

Global site tag (gtag.js) - Google Analytics