读书人

oracle中去掉文本中的换行符、回车符、

发布时间: 2012-09-01 09:33:02 作者: rapoo

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 VC???????? TT???????? TRANSLATE(VC,CHR(10),',')
--- ---------- ---------- -------------------------
? 0 Aaaaaaaaa? Aaaaaaaaa? Aaaaaaaaa
? 1 Aaaaaaaaa? Aaaaaaaaa? Aaaaaaaaa
? 2 大Ba?????? 大Babc带?? 大Ba,b,c带
??? b????????????????????
??? c带??????????????????
?
? 3 C????????? C????????? C
? 1 D????????? D????????? D
? 5 A????????? A????????? A
? 5 A????????? A????????? A
? 0 A????????? A????????? A
? 0 A????????? A????????? A
?
?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 VC???????? TT???????? TRANSLATE(VC,CHR(13)||CHR(10),
--- ---------- ---------- ------------------------------
? 0 Aaaaaaaaa? Aaaaaaaaa? Aaaaaaaaa
? 1 Aaaaaaaaa? Aaaaaaaaa? Aaaaaaaaa
? 2 大Ba?????? 大Babc带?? 大Babc带
??? b????????????????????
??? c带??????????????????
?
? 3 C????????? C????????? C
? 1 D????????? D????????? D
? 5 A????????? A????????? A
? 5 A????????? A????????? A
? 0 A????????? A????????? A
? 0 A????????? A????????? A
?
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 dual[]sel
select REPLACE(gg, chr(10), '') from dual???????????????????????????????????????
select translate(string,chr(13)||chr(10),',') from dual;????

func:

?

2.2.1????? 单记录字符函数

??????? 函???? 数????????????????????? 说??????????????? 明
? ASCII???????????????????? 返回对应字符的十进制值
? CHR?????????????????????? 给出十进制返回字符?
?CONCAT??????????????????? 拼接两个字符串,与? ||?????? 相同
? INITCAT?????????????????? 将字符串的第一个字母变为大写
? INSTR???????????????????? 找出某个字符串的位置
? INSTRB??????????????????? 找出某个字符串的位置和字节数
? LENGTH??????????????????? 以字符给出字符串的长度
? LENGTHB?????????????????? 以字节给出字符串的长度
? LOWER???????????????????? 将字符串转换成小写
? LPAD????????????????????? 使用指定的字符在字符的左边填充
? LTRIM???????????????????? 在左边裁剪掉指定的字符
? RPAD????????????????????? 使用指定的字符在字符的右边填充
? RTRIM???????????????????? 在右边裁剪掉指定的字符
? REPLACE?????????????????? 执行字符串搜索和替换
? SUBSTR??????????????????? 取字符串的子串
? SUBSTRB?????????????????? 取字符串的子串(以字节)
? SOUNDEX?????????????????? 返回一个同音字符串
? TRANSLATE???????????????? 执行字符串搜索和替换
? TRIM????????????????????? 裁剪掉前面或后面的字符串
? UPPER???????????????????? 将字符串变为大写
? NVL?????????????????????? 以一个值来替换空值

ASCII(<c1>)
<c1>是字符串。返回与指定的字符对应的十进制数。
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

???? A????? a? ZERO?? SPACE
---------- ---------- ---------- ----------
???? 65???? 97???? 48???? 32

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

????? ZHAO??????? LENG
??? ----------? ----------
???? 54740???????? 1

CHR(<I>[NCHAR])
给出整数,返回对应字符。如:

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

ZH?? C
--? -
赵? A

CONCAT(<c1>,<c2>)
SQL> select concat('010-','8801 8159')||'转23' 赵元杰电话? from dual;

赵元杰电话

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

010-8801 8159 转23

INITCAP(<c1>)

返回字符串c1?????? 并第一个字母变为大写。例如:

SQL> select initcap('simth') upp from dual;

UPP
-----
Simth

INSTR(<c1>,<c2>[,<I>[,<j>] ] )
在一个字符串中搜索指定的字符,返回发现指定的字符的位置。
C1: 被搜索的字符串?
C2: 希望搜索的字符串?
I: 搜索的开始位置,缺省是1?
J: 出现的位置,缺省是1。?

SQL> SELECT INSTR ('Oracle Training', 'ra', 1, 2) "Instring" FROM DUAL;

? Instring

----------

??????? 9

INSTRB(<c1>,<c2>[,<I>[,<j>] ] )

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

LENGTH( <c> )

返回字符串? c????? 的长度。

SQL> l
?1? select name,length(name),addr,length(addr),sal,length(to_char(sal))
? 2* from nchar_tst
SQL> /

NAME??? LENGTH(NAME) ADDR??????????? LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))

------?? ------------? ----------------? ------------? ----------? ----------------

赵元杰????????? 3??????? 北京市海淀区???????????????? 6???????? 99999.99??? 8

LENGTHB( <c> )

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

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

NAME???? LENGTHB(NAME)?????? LENGTH(NAME)

------?? -------------?? ------------

赵元杰???????????????? 6???????????? 3

LOWER ( <c> )
返回字符串并将所有字符变为小写。

SQL> select lower('AaBbCcDd') AaBbCcDd from dual;

AABBCCDD

--------

aabbccdd

UPPER( <c>)
与? LOWER??? 相反,将给出字符串变为大写。如:

SQL>??? select upper('AaBbCcDd') AaBbCcDd from dual;

AABBCCDD

--------

AABBCCDD
RPAD 和LPAD(粘贴字符)
?
RPAD(string,Length[,'set'])?
LPAD(string,Length[,'set'])?
????? RPAD在列的右边粘贴字符;?
????? LPAD在列的左边粘贴字符。?
?
例 1:?
SQL>select?? RPAD(City,35,'.'),temperature??? from? weather;?
?
??????? RPAD(City,35,'.')??????????? temperature?
??????? -------------------------- ----------------?
?????????? CLEVELAND......??????????????????? 85?
?????????? LOS? ANGELES..???????????????????? 81?
????????? .........................?
?
??????? (即不够 35 个字符用'.'填满)?

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

LTRIM (string [,’set’])

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

RTRIM (string [,’set’])

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[,Count])

取子字符串中函数?
对字串 (或字段),从 start字符 开始,连续取 count 个字符并返回结果,如果没有指 count
则一直取到尾。?
?
select phone,substr(phone,1,3) || ‘0’ || substr(phone,4)?
from telecommunication where master ’中国电信’;

SUBSTRB(string,start[,Count])
对字串 (或字段),从 start字节 开始,连续取 count 个字节并返回结果,如果没有指 count
则一直取到尾。?
?
?
REPLACE (‘string’ [,’string_in’,’string_out’])

String: 希望被替换的字符串或变量。?
String_in: 被替换字符串。?
String_out: 要替换字符串。?
?
SQL> select replace('Informaix 中国公司','Informaix','IBM Informix')
? 2? IBM 数据库? from dual;

IBM 数据库
--------------------
IBM Informix 中国公司

SOUNDEX( <c> )

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

SELECT DPL_NAME FROM DENIED_PARTIES_LIST WHERE
SOUNDEX(DPL_NAME) = SOUNDEX(‘Saddam Hussain’) ;
DPL_NAME
----------------------------------------------
Al Husseni
Sadda Al Sada.

REPLACE (‘string’ [,’string_in’,’string_out’])

String:希望被替换的字符串或变量。?
String_in: 被替换字符串。?
String_out: 要替换字符串。?
?
SELECT REPLACE (‘Oracle’, ‘Or’, ‘Mir’) “Example “ FROM DUAL;?
Example?
-------?
Miracle?

TRIM? ( [<leading>] <trailing> FROM <trim_char>???? )
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 中裁剪掉前面及尾面的字符。?
?
例子:将下面字符串中的前面和后面的‘0?????????????????? ‘字符都去掉:

SELECT TRIM (0 FROM 0009872348900) "TRIM Example" FROM DUAL;

TRIM example

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

98723489

?

语法: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

1 楼 suco001 2011-11-30 顶你个肺,太棒了,chr(10)解决了sqlserver报表中文本带回车的问题,只是有点搞不太懂,换行和回车有啥子区别咧?

读书人网 >其他数据库

热点推荐