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报表中文本带回车的问题,只是有点搞不太懂,换行和回车有啥子区别咧?