oracle中特殊字符处理

notepadd++中显示所有在字符观察

CR意思是carriage return,回车,\r,ASCII码为13

LF意思是linefeed,换行,\n,ASCII码为10

参考http://blog.csdn.net/mike__cool/article/details/53291821

在Oracle中,有的时候字段(设计不当)被设计成char类型,如果包含特殊字符是会查不出数据,用肉眼是看不出来的,
就需要检查数据中是否存在特殊字符,需要把特殊字符去掉。

一、特殊符号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

posted on 2017-01-26 10:23 Jeremy,Zhang 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/zhangjunjie0228/p/6351323.html

oracle中特殊字符处理相关推荐

  1. Oracle中如何插入特殊字符: 和 ' (多种解决方案)

    http://www.blogjava.net/pengpenglin/archive/2008/01/16/175689.html 今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要 ...

  2. ORACLE脚本中特殊字符转义

    ORACLE中,大家都知道两个单引号之间包含的为字符型,但是如果需要在脚本中编写单引号应该如何编写.当然用''''(4个单引号)也是可以组装成一个单引号. 大家在plsql中,如何把含有回车的文字用u ...

  3. oracle 和 ' 特殊字符处理

    oracle & 和 ' 特殊字符处理 2011年09月16日 星期五 12:22 oracle & 和 ' 特殊字符处理 今天在导入一批数据到Oracle时,碰到了一个问题:Toad ...

  4. oracle排序非英文最后,Oracle中中文、数字,英文混杂形式的字段进行排序的方法...

    http://blog.csdn.net/p451933505/article/details/9272257 对Oracle中中文.数字.英文混杂形式的字段进行排序的方法: 例如: order by ...

  5. oracle中prad函数_等保测评2.0:Oracle身份鉴别

    一.说明 本篇文章主要说一说oracle数据库中身份鉴别控制点中测评项a的相关内容和理解. 二.测评项a a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 ...

  6. oracle中的日期查询在mybatis中写法

    oracle中的日期查询在mybatis中写法可以参考如下:注意提交时间的<号是用特殊字符代替的哦,直接写<号程序会报错的 <!-- 通用查询条件 --> <!-- 通用 ...

  7. 【转】oracle 和 ' 特殊字符处理 ( like 'GAC/_%' escape ''; 这里面的 / 居然将 转义了 为什么?)...

    原文地址:http://blog.csdn.net/gjswxhb/article/details/6083242 今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示(plsql 也一样 ...

  8. 【Oracle】Oracle中使用转义字符

    1.Oracle 特殊字符 转义 关键词:oracle    转义                                           环境:oracle9i plsql 在plsql ...

  9. 怎样在oracle中加下划线,Oracle使用like查询时对下划线的处理方法

    如:查询ZJ_STANDARD_ITEM表的name1字段包含"_("的数据 --以下的查询语句执行会发现所查询的数据并不是我们想要数据 select * from ZJ_STAN ...

最新文章

  1. 【Python】深度学习中将数据按比例随机分成随机 训练集 和 测试集的python脚本
  2. php 删除硬链接,RHCE系列之文件管理----硬链接和软链接
  3. c语言 feof_C语言 实现简单功能的12306火车售票系统【附源码】
  4. js流程控制题——如何实现一个LazyMan
  5. NeurIPS 2021 | 港中文周博磊组:基于实例判别的数据高效生成模型
  6. ASP.Net MVC开发基础学习笔记:五、区域、模板页与WebAPI初步
  7. C++中如何读取一个数的位数_C语言编写程序求水仙花数
  8. pandas object转float_Pandas中文官档~基础用法6
  9. java string类型详解_Java字符串类型详解
  10. HTML统计用户浏览页面时间,如何使用JS代码计算用户浏览页面的时间呢?
  11. 阿里、字节年薪百万的测开专家,都在关注哪些前沿技术
  12. 身处小公司,如何在2年内快速突破,拿到大厂offer?
  13. linux编译安装rrdtool,Linux下RRDTool安装方法
  14. Linux制作软盘镜像
  15. 蜗牛星际D款安装黑群晖教程
  16. 利用tensorflow自动生成英文摘要
  17. 【学术】SCI期刊影响因子查询方式
  18. P问题、NP问题、NPC问题、NPH问题详解
  19. easyui combogrid组件 setValue 影响
  20. 龙迅LT86102SXE 是 Lontium 的第 4 代 2 端口 HDMI/DVI 分配器

热门文章

  1. 1956年五元钱币市值多少?
  2. 天天早上慢跑一小时对身体好吗?
  3. 靠一杯茶融资160亿
  4. 不要根据自己的喜好创业
  5. 怎样能让电脑干干净净的没有各种弹窗广告?
  6. Huawei is developing a new future technology
  7. go实现本地文件搜索引擎
  8. 了解SQL Server数据库恢复模型
  9. 了解SQL Server中的倾斜数据
  10. alwayson高可用组_了解AlwaysOn可用性组上的备份-第1部分