一文了解数据库translate函数的应用和原理 (数据库translate函数)

在数据库中,常常会遇到需要处理字符串的情况。如何高效地处理这些字符串是我们所需要关注的问题。在这里,介绍一种非常常用的处…

在数据库中,常常会遇到需要处理字符串的情况。如何高效地处理这些字符串是我们所需要关注的问题。在这里,介绍一种非常常用的处理字符串的函数——translate函数。

一、translate函数的定义

translate函数是一个用于字符串替换的函数。它能够将字符串中指定的字符用另一组指定的字符进行替换。 translate函数的语法为:

translate(expr,str1,str2)

其中:

expr:需要进行字符串替换的表达式。

str1:需要被替换的字符(或字符)。

str2:替换的字符(或字符),长度必须和str1相等。

二、translate函数的应用

1.将字符串中某些字符替换为其他字符

例如,将“abc”替换为“def”。

SELECT TRANSLATE(‘abcdedcabac’, ‘abc’, ‘def’);

执行结果为:

dedfeddbefd

2.将字符串中的数字替换为字母

这种情况常常出现在需要生成随机字符序列的场景中。

SELECT TRANSLATE(‘1234567890’, ‘0123456789’, ‘abcdefghij’);

执行结果为:

abcdefghij

3.替换多个字符

有些时候我们需要用不同的字符替换字符串中的多个字符。

SELECT TRANSLATE(‘1223’, ‘123’, ‘ABC’);

执行结果为:

AAAC

三、translate函数的原理

translate函数实际上是调用了内置函数replace函数,只不过replace函数是按字节进行替换的,而translate函数是按字符进行替换的。 实现translate函数的步骤如下:

1. 遍历字符集str1,将其中每个字符c1替换为str2中相应的字符c2。如果str1和str2长度不一致,translate函数内部会在str2末尾补充空格,以满足长度要求。

2. 扫描字符串expr,如果字符c出现在str1中,则将其替换为用str2中相应位置的字符c2。

需要注意的是,当str1或str2为空时,translate函数将不会进行任何替换操作。

四、

translate函数可以快速地对字符串进行多个字符的替换操作,而且它比较省内存。但是,需要有两个等长的字符串进行替换,如果要替换多个字符,也需要消耗大量的内存。因此,当我们需要操作大量字符串时需要注意,避免出现内存溢出的情况。

相关问题拓展阅读:

  • 在oracle里如何去掉数据后的回车换行符
  • transform的translate、scale、rotate、skew(2D)的简单使用

在oracle里如何去掉数据后的回车换行符

oracle中去掉文本中的换行符、回车符、制表符小结

一、特殊符号ascii定义

制表符 chr(9)

换行符 chr(10)

回车符 chr(13)

二、嵌套使用repalce,注意每次只能悉含提交一个符号,如先回车再换行悉乱

select REPLACE(gg, chr(10), ”) from dual

要注意chr(13) | | chr(10) 此类结合使用的情况比较多,回车换行在notepad中是比较好看点的,所以要考虑此种情况

select translate(string,chr(13)||chr(10),’,’) from dual;

1、例子一

create table TEST_1

(

VA VARCHAR2(10),

VB NUMBER(2),

VC VARCHAR2(10),

VD NUMBER(11,2),

VE NUMBER(11,4),

VCL CLOB

);

SQL> select vb,vc,replace(vc,chr(10),”) as TT, translate(vc,chr(10),’,’) from test_1;

VB VCTTTRANSLATE(VC,CHR(10),’,’)

0 Aaaaaaaaa Aaaaaaaaa Aaaaaaaaa

1 Aaaaaaaaa Aaaaaaaaa Aaaaaaaaa

2 大Ba大Babc带 大Ba,b,c带

b

c带

3 CCC

1 DDD

5 AAA

5 AAA

0 AAA

0 AAA

2、例子二

要注意chr(13) | | chr(10) 此类结合使睁陆笑用的情况比较多,回车换行在notepad中是比较好看点的,所以要考虑此种情况

select vb,vc,replace(vc,chr(10),”) as TT, translate(vc,chr(13)||chr(10),’,’) from test_1;

SQL> select vb,vc,replace(vc,chr(10),”) as TT, translate(vc,chr(13)||chr(10),’,’) from test_1;

VB VCTTTRANSLATE(VC,CHR(13)||CHR(10),

0 Aaaaaaaaa Aaaaaaaaa Aaaaaaaaa

1 Aaaaaaaaa Aaaaaaaaa Aaaaaaaaa

2 大Ba大Babc带 大Babc带

b

c带

3 CCC

1 DDD

5 AAA

5 AAA

0 AAA

0 AAA

11 rows selected

三、对于字符大对象的符号处理

对于clob字段中的符号处理,先to_char然后一样的处理

SQL> select to_char(vcl),replace(to_char(vcl),chr(10),”) from test_1;

TO_CHAR(VCL)REPLACE(TO_CHAR(VCL),CHR(10),’

嵌套使用repalce,注意每次只能提交一个符号,如先回车再换行嵌套使用repalce,注意每次只能提交一个符号,如先回车再换行select REPLACE(gg, chr(10), ”) from dualsel

select REPLACE(gg, chr(10), ”) from dual

select translate(string,chr(13)||chr(10),’,’) from dual;

func:

2.2.单记录字符函数

函 数说 明

ASCII返回对应字符的十进制值

CHR给出十进制返回字符

CONCAT 拼接两个字符串,与 ||相同

INITCAT 将字符串的之一个字母变为大写

INSTR找出某个字符串的位置

INSTRB 找出某个字符串的位置和字节数

LENGTH 以字符给出字符串的长度

LENGTHB 以字节给出字符串的长度

LOWER将字符串转换成小写

LPAD使用指定的字符在字符的左边填充

LTRIM在左边裁剪掉指定的字符

RPAD使用指定的字符在字符的右边填充

RTRIM在右边裁剪掉指定的字符

REPLACE 执行字符串搜索和替换

SUBSTR 取字符串的子串

SUBSTRB 取字符串的子串(以字节)

SOUNDEX 返回一个同音字符串

TRANSLATE 执行字符串搜索和替换

TRIM裁剪掉前面或后面的字符串

UPPER将字符串变为大写

NVL以一个值来替换空值

ASCII()

是字符串。返回与指定的字符对应的十进制数。

SQL> select ascii(‘A’) A,ascii(‘a’) a,ascii(‘0’) zero,ascii(‘ ‘) space from dual;

A a ZERO SPACE

SQL> select ascii(‘赵’) zhao,length(‘赵’) leng from dual;

ZHAOLENG

1

CHR()

给出整数,返回对应字符。如:

SQL> select chr(54740) zhao,chr(65) chr65 from dual;

ZH C

— –

赵 A

CONCAT(,)

SQL> select concat(‘010-‘,”)||’转23’ 赵元杰 from dual;

赵元杰

转23

INITCAP()

返回字符串c并之一个字母变为大写。例如:

SQL> select initcap(‘simth’) upp from dual;

UPP

—–

Simth

INSTR(, > )

在一个字符串中搜索指定的字符,返回发现指定的字符的位置。

C1: 被搜索的字符串

C2: 希望搜索的字符串

I: 搜索的开始位置,缺省是1

J: 出现的位置,缺省是1。

SQL> SELECT INSTR (‘Oracle Training’, ‘ra’, 1, 2) “Instring” FROM DUAL;

Instring

INSTRB(, > )

除了返回的字节外 ,与INSTR相同,

LENGTH( )

返回字符串 c 的长度。

SQL> l

1 select name,length(name),addr,length(addr),sal,length(to_char(sal))

2* from nchar_tst

SQL> /

NAME LENGTH(NAME) ADDRLENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))

赵元杰 北京市海淀区9999.

LENGTHB( )

以字节返回字符串的字节数。

SQL> select name,lengthb(name),length(name) from nchar_tst;

NAME LENGTHB(NAME)LENGTH(NAME)

赵元杰 3

LOWER ( )

返回字符串并将所有字符变为小写。

SQL> select lower(‘AaBbCcDd’) AaBbCcDd from dual;

AABBCCDD

aabbccdd

UPPER( )

与 LOWER 相反,将给出字符串变为大写。如:

SQL> select upper(‘AaBbCcDd’) AaBbCcDd from dual;

AABBCCDD

AABBCCDD

RPAD 和LPAD(粘贴字符)

RPAD(string,Length)

LPAD(string,Length)

RPAD在列的右边粘贴字符;

LPAD在列的左边粘贴字符。

例 1:

SQL>select RPAD(City,35,’.’),temperature from weather;

RPAD(City,35,’.’)temperature

CLEVELAND……

LOS ANGELES..

…………………….

(即不够 35 个字符用’.’填满)

LTRIM(左截断)RTRIM(右截断) 函数

LTRIM (string )

Left TRIM (左截断)删去左边出现的任何set 字符。

RTRIM (string )

Right TRIM (右截断)删去右边出现的任何set 字符。

例1:

SELECT RTRIM (‘Mother Theresa, The’, ‘The’) “Example of Right

Trimming” FROM DUAL;

Example of Right

Mother Theresa,

SUBSTR Substr(string,start)

取子字符串中函数

对字串 (或字段),从 start字符 开始,连续取 count 个字符并返回结果,如果没有指 count

则一直取到尾。

select phone,substr(phone,1,3) || ‘0’ || substr(phone,4)

from telecommunication where master ’中国电信’;

SUBSTRB(string,start)

对字串 (或字段),从 start字节 开始,连续取 count 个字节并返回结果,如果没有指 count

则一直取到尾。

REPLACE (‘string’ )

String: 希望被替换的字符串或变量。

String_in: 被替换字符串。

String_out: 要替换字符串。

SQL> select replace(‘Informaix 中国公司’,’Informaix’,’IBM Informix’)

2 IBM 数据库 from dual;

IBM 数据库

IBM Informix 中国公司

SOUNDEX( )

返回一个与给定的字符串读音相同的字符串(不管拼写是否一样)。

SELECT DPL_NAME FROM DENIED_PARTIES_LIST WHERE

SOUNDEX(DPL_NAME) = SOUNDEX(‘Saddam Hussain’) ;

DPL_NAME

—-

Al Husseni

Sadda Al Sada.

REPLACE (‘string’ )

String:希望被替换的字符串或变量。

String_in: 被替换字符串。

String_out: 要替换字符串。

SELECT REPLACE (‘Oracle’, ‘Or’, ‘Mir’) “Example “ FROM DUAL;

Example

Miracle

TRIM ( FROM )

RIM可以使你对给定的字符串进行裁剪(前面,后面或前后)。

z 如果指定 LEADING, Oracle 从trim_char 中裁剪掉前面的字符;

z 如果指定TRAILING, Oracle 从trim_char 中裁剪掉尾面的字符;

z 如果指定两个都指定或一个都没有给出,Oracle从trim_char 中裁剪掉前面及尾面的字

符;

z 如果不指定 trim_character, 缺省为空格符;

z 如果只指定trim_source, Oracle Oracle从trim_char 中裁剪掉前面及尾面的字符。

例子:将下面字符串中的前面和后面的‘ ‘字符都去掉:

SELECT TRIM (0 FROM) “TRIM Example” FROM DUAL;

TRIM example

—-

语法:TRANSLATE(expr,from,to)

om,to) expr: 代表一串字符,

expr: 代表一串字符,from 与 to 是从左到右一一对应的关系,如果不能对应,则视为空值。

举例:

select translate(‘abcbbaadef’,’ba’,’#@’) from dual (b将被#替代,a将被@替代)

select translate(ab

select translate(‘abcbbaadef’,’bad’,’#@’) from dual (b将被#替代,a将被@替代,d对应的值是空值,将被移走)

因此:结果依次为:@#c##@@def 和@#c##@@ef

替喊如哗换数据中所有回车和换行可以用

replace(column,chr(10))

replace(replace(column,chr(10)),chr(13))

或者利用translate函数。

如果只是替换末尾的回车换郑行行橡橡用rtrim

rtrim(column,chr(10)) –有些系统回车换行就是一个chr(10)

transform的translate、scale、rotate、skew(2D)的简单使用

border: 1px dashed red;

solid

为实线;

dashed

为虚线。

margin: 0 auto; ,

margin

后面如果中银裤只有

两个参数

的话,之一个表示 top 和 bottom ,卖简第二个表示 left 和 right 。

因为0 auto,表示上下边界为0,左右则根据宽度自适应相同值(即居中)。

如上图所示,X轴偏移的方法有如下三个

如上图所示,Y轴偏移的方法有如下两个

如上图所示,Y轴偏移的方法有如下一个

注意搏悄:

上述所说的都是X和Y轴的正向偏移,我们也可以给它设置成

负数

,使其往反向偏移,如 transform: translate(-100px) ;即为向x轴的反向(左侧)偏移了100px。

该函数只

接受数字

,不接受类似于”100px“。

如上图所示,X轴缩放的方法有如下两个

如上图所示,Y轴缩放的方法有如下两个

如上图所示,Y轴缩放的方法有如下两个

该函数只接受一个参数,也就是

角度

角度可以由以下四种不同的单位类型来定义。

该函数只接受一个参数,也就是角度。

如上图所示,X轴倾斜的方法有如下两个

如上图所示,Y轴倾斜的方法有如下一个

如上图所示,X/Y轴倾斜的方法有如下一个

关于数据库translate函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

香港服务器首选港服(Server.HK),2H2G首月10元开通。
港服(Server.HK)(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

为您推荐

港服(Server.HK)MongoDB教程:MongoDB 索引

MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件...

港服(Server.HK)PostgreSQL教程PostgreSQL 别名

PostgreSQL 别名 我们可以用 SQL 重命名一张表或者一个字段的名称,这个名称就叫着该表或该字段的别名。 创建...

港服(Server.HK)Memcached教程:Memcached stats 命令

Memcached stats 命令 Memcached stats 命令用于返回统计信息例如 PID(进程号)、版本号...

港服(Server.HK)Redis教程:Redis 数据类型

Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集...

港服(Server.HK)Redis教程:Redis GEO

Redis GEO Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 ...
返回顶部