Oracle不可见字符 本文最后更新于:2020-04-19 17:23 星期日
Oracle 不可见字符处理 1. 处理过程 表结构 1 2 3 create table telphone_temp_20190821( telnum varchar2(32 ) );
查询数据,确定ASCII值 1 select ROWNUM|| '#' || trim (telnum)|| '#' || lengthb(telnum)|| '#' || dump(telnum) from telphone_temp_20190821 where ROWNUM < 3 ;
1 2 3 4 ROWNUM|| '#' || TRIM (TELNUM)|| '#' || LENGTHB(TELNUM)|| '#' || DUMP(TELNUM)1 # 146 #17 #Typ= 1 Len= 17 : 9 ,9 ,49 ,52 ,54 ,9 ,9 2 # 144 #15 #Typ= 1 Len= 15 : 9 ,9 ,49 ,52 ,52 ,9 ,9
不可见字符 ASCII 值等于9
1 select chr(9 ) from dual;
replace剔除不可见字符,利用chr()
函数将数值转换成不可见 字符 1 select replace(telnum, chr(9 ), '' ) from telphone_temp_20190821 where ROWNUM < 3 ;
2. Oracle 函数 dump(expression [, return_format] [, start_position] [, length] )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 expression:要分析的表达式。 return_format:决定了返回值的格式,该参数可以是以下任何值: ● 8 :八进制符号 ● 10 :十进制符号 ● 16 :十六进制符号 ● 17 :单个字符 ● 1008 :带字符集名称的八进制符号 ● 1010 :带字符集名称的十进制符号 ● 1016 :带字符集名称的十六进制符号 ● 1017 :带字符集名称的单个字符 start_position :可选的,要返回的内部表示的起始位置。 length :可选的,要返回的内部表示的长度。 返回值: Typ=1 Len=17: [CharacterSet=ZHS16GBK] 9,9,49,52,54,9,9 ● Type : 字段类型(见表格) ● Len :长度 ● 每个字符的 Ascii值
lengthb()
:返回的是 字节数1 2 3 4 5 6 7 8 select length('Oracle' ) from dual 结果:6 select lengthb('Oracle' ) from dual 结果:6 select length('甲骨文' ) from dual 结果:3 select lengthb('甲骨文' ) from dual 结果:6
length()
:返回的是 字符数trim()
:函数从字符串的开头,结尾或两端删除空格或指定的字符。replace(char, search_string [, replace_string])
:) 如果没有指定replace_string 变量的值,那么当发现search_string 变量的值时,就将其删除ascii(single_character)
:返回代表指定字符的数字值代码chr(number_code)
:函数可以根据数字代码返回字符3. 对照表 ASCII对照表
ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 、 1 SOH 33 ! 65 A 97 a 2 STX 34 “ 66 B 98 b 3 ETX 35 # 67 C 99 c 4 EOT 36 $ 68 D 100 d 5 ENQ 37 % 69 E 101 e 6 ACK 38 & 70 F 102 f 7 BEL 39 , 71 G 103 g 8 BS 40 ( 72 H 104 h 9 HT 41 ) 73 I 105 i 10 LF 42 * 74 J 106 j 11 VT 43 + 75 K 107 k 12 FF 44 , 76 L 108 l 13 CR 45 - 77 M 109 m 14 SO 46 . 78 N 110 n 15 SI 47 / 79 O 111 o 16 DLE 48 0 80 P 112 p 17 DCI 49 1 81 Q 113 q 18 DC2 50 2 82 R 114 r 19 DC3 51 3 83 S 115 s 20 DC4 52 4 84 T 116 t 21 NAK 53 5 85 U 117 u 22 SYN 54 6 86 V 118 v 23 TB 55 7 87 W 119 w 24 CAN 56 8 88 X 120 x 25 EM 57 9 89 Y 121 y 26 SUB 58 : 90 Z 122 z 27 ESC 59 ; 91 [ 123 { 28 FS 60 < 92 / 124 29 GS 61 = 93 ] 125 } 30 RS 62 > 94 ^ 126 ` 31 US 63 ? 95 _ 127 DEL
特殊字符解释
NUL空 VT 垂直制表 SYN 空转同步 STX 正文开始 CR 回车 CAN 作废 ETX 正文结束 SO 移位输出 EM 纸尽 EOY 传输结束 SI 移位输入 SUB 换置 ENQ 询问字符 DLE 空格 ESC 换码 ACK 承认 DC1 设备控制1 FS 文字分隔符 BEL 报警 DC2 设备控制2 GS 组分隔符 BS 退一格 DC3 设备控制3 RS 记录分隔符 HT 横向列表 DC4 设备控制4 US 单元分隔符 LF 换行 NAK 否定 DEL 删除
Oracle字段类型
CODE Type 1 VARCHAR2 2 NUMBER 8 LONG 12 DATE 23 RAW 24 LONG RAW 69 ROWID 96 CHAR 112 CLOB 113 BLOB 114 BFILE 180 TIMESTAMP 181 TIMESTAMP WITH TIMEZONE 182 INTERVAL YEAR TO MONTH 183 INTERVAL DAY TO SECOND 208 UROWID 231 TIMESTAMP WITH LOCAL TIMEZONE
Oracle不可见字符
https://blog.dekun.wang/blog/8e3d9981.html