- 浏览: 133338 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
酱油男js:
不错...学习了。
oracle sql 优化大全 -
浪子秋水:
网页编码就是那点事 -
shenghuorulan:
通俗易懂。好文章,直接想到的问题都提到了。
oracle 全文检索实践 -
飞儿9530:
lucene 3.0.1 学习
to_single_byte(c)转换成半角
to_multi_byte(c)转换成全角
dump查看
SELECT '12345',
DUMP('12345'),
TO_SINGLE_BYTE('12345'),
DUMP(TO_SINGLE_BYTE('12345'))
FROM dual;
DUMP函数返回一个Varchar2的值,该值格式如下
Type=××× Len=×××: ×××(,×××)*
Type可以参阅Data Types
Len 字节数
参数说明:
return_fmt
8 返回8进制结果
10 返回10进制结果
16返回16进制结果
17以每个字节作为单个字符返回,当且仅当它可以被解释为编译器的字符集中的可打印字符-------通常是ASCII or EBCDIC。
start_position and length
确定要返回的内部表示形式的哪个部分。
expr 为 null,则此函数返回 NULL。
该函数不支持CLOB直接作为参数。但是,可以作为通过隐式数据转换参数中传递 CLOB值。
例子如下:
SQL> select dump(1,16) from dual;
DUMP(1,16)
-----------------
Typ=2 Len=2: c1,2
SQL> select dump(1,10) from dual;
DUMP(1,10)
------------------
Typ=2 Len=2: 193,2
SQL> select dump('火狐',16) from dual;
DUMP('火狐',16)
-------------------------
Typ=96 Len=4: bb,f0,ba,fc
SQL> select dump('US',16) from dual;
DUMP('US',16)
-------------------
Typ=96 Len=2: 55,53
SQL> select dump('US',17) from dual;
DUMP('US',17)
-----------------
Typ=96 Len=2: U,S
SQL> select dump('火狐',17) from dual;
DUMP('火狐',17)
-------------------------
Typ=96 Len=4: bb,f0,ba,fc
SQL> select dump(1,17) from dual;
DUMP(1,17)
------------------
Typ=2 Len=2: c1,^B
SQL> select dump('火狐',17,1,1) from dual;
DUMP('火狐',17,1
----------------
Typ=96 Len=4: bb
SQL> select dump('火狐',17,1,2) from dual;
DUMP('火狐',17,1,2)
-------------------
Typ=96 Len=4: bb,f0
其次,了解一下Number类型数据在DUMP是如何处理的。
Number型数据经DUMP函数处理以后,输出格式如下:
Type=2 Len=×××:符号/指数位, [数字1,数字2,数字3,. . . ,数字20]
Type=2 :表示Number类型
注意:如果是负数,且总长度小于21个字节,最后加一个102(是为了排序的需要)
DUMP(number,10)是以指数的方式处理的
正数: 符号/指数位 > 128
计算公式:
指数=符号/指数位(第一字节)-193, 设 N为指数
数值1 = (数字1-1)*100^(N-0)
数值2 = (数字2-1)*100^(N-1)
.
.
.
数值20 = (数字20-1)*100^(N-19)
-------------------------------------------------------------
Number数值 sum(数值1,数值2,数值3,. . . , 数值20)
负数:符号/指数位 < 128
指数=62-符号/指数位(第一字节),设 N为指数
数值1 = (101-数字1)*100^(N-0)
数值2 = (101-数字2)*100^(N-1)
.
.
.
数值20 = (101-数字20)*100^(N-19)
-------------------------------------------------------------
Number数值 sum(数值1,数值2,数值3,. . . , 数值20)
0是区分正数和负数的分割点,0既不属于正数也不属于负数
0的以10进制方式DUMP出来的信息如下:
SQL> select dump(0) from dual;
DUMP(0)
----------------
Typ=2 Len=1: 128
根据上面的信息,我们可以计算得到16进制的DUMP信息应该是0X80,转换成二进制为1000 0000,正好是是一个字节编码最大值的一半。
以根据上面正数和负数的公式,我们计算以下数值的10和16进制的DUMP信息:
1)、150 2)、34.33 3)、-140 4)、 -333.99
第1)解题步骤:
150=100+50=100^1+ 50 ,
故根据上述,应该可以初步确认,150 DUMP函数输出格式:
Type=2 Len=3: 符号/指数位(第一字节),数字1,数字2
指数=符号/指数位(第一字节)-193 ,符号/指数位(第一字节)=194
100 ^1=(数字1-1)*100^(1-0)=(数字1-1)*100
数字1-1=1 ===> 数字1 = 2
50=(数字2-1)*100^(1-1)= (数字2-1)*1
数字2-1=50 ===> 数字2 = 51
150的DUMP函数10进制输出为: Type=2 Len=3: 194, 2, 51
根据上面,10进制194, 2, 51转换为16进制,则DUMP函数16进制为:
Type=2 Len=3: C2, 2, 33
Oracle SQL确认:
SQL> select dump(150) from dual;
DUMP(150)
---------------------
Typ=2 Len=3: 194,2,51
SQL> select dump(150,16) from dual;
DUMP(150,16)
--------------------
Typ=2 Len=3: c2,2,33
SQL>
第2)解题步骤:
33.33=33+0.33= (数字1-1)*100^(N-0)+ (数字2-1)*100^(N-1)
可以初步确认,33.33 DUMP函数输出格式:
Type=2 Len=3: 符号/指数位(第一字节),数字1,数字2
33 < 100 ===> 33 < 100^1 ===> N = 0
符号/指数位(第一字节)= 193
(数字1-1)*100^0=33 ===> 数字1=34
(数字2-1)*100^(0-1)=0.33 ===> 数字2-1 = 33 ===> 数字2=34
33.33的DUMP函数10进制输出为: Type=2 Len=3: 193, 34, 34
16进制输出格式:Type=2 Len=3: C1, 22, 22
Oracle SQL确认:
SQL> select dump(33.33,16) from dual;
DUMP(33.33,16)
---------------------
Typ=2 Len=3: c1,22,22
SQL> select dump(33.33) from dual;
DUMP(33.33)
----------------------
Typ=2 Len=3: 193,34,34
第3题忽略不做……
第4)解题步骤:
-333.99=-(300+33+0.99)=-(3*100^1+33+0.99)
是负数
可以初步确认,-333.99 DUMP函数输出格式:
Type=2 Len=5: 符号/指数位(第一字节),数字1,数字2,数字3 , 120
指数=62-符号/指数位(第一字节), 数字1上的指数是1 ,N=1
故 1=62-符号/指数位(第一字节) ===> 符号/指数位(第一字节)=61
3*100^1 = (101-数字1)*100^(N-0)= (101-数字1)*100^1 ===> 3 = (101-数字1)
数字1=98
33=(101-数字2)*100^(1-1) ===> 33= (101-数字2)
数字2=68
0.99==(101-数字3)*100^(1-2) ===> 0.99= (101-数字3)*100^-1
数字3 = 2
-333.99的DUMP函数10进制输出为: Type=2 Len=5: 61, 98, 68, 2,102
16进制输出格式:Type=2 Len=5: 3D, 62, 44,2,66
Oracle SQL确认:
SQL> select dump(-333.99) from dual;
DUMP(-333.99)
---------------------------
Typ=2 Len=5: 61,98,68,2,102
SQL> select dump(-333.99,16) from dual;
DUMP(-333.99,16)
--------------------------
Typ=2 Len=5: 3d,62,44,2,66
to_multi_byte(c)转换成全角
dump查看
SELECT '12345',
DUMP('12345'),
TO_SINGLE_BYTE('12345'),
DUMP(TO_SINGLE_BYTE('12345'))
FROM dual;
DUMP函数返回一个Varchar2的值,该值格式如下
Type=××× Len=×××: ×××(,×××)*
Type可以参阅Data Types
Len 字节数
参数说明:
return_fmt
8 返回8进制结果
10 返回10进制结果
16返回16进制结果
17以每个字节作为单个字符返回,当且仅当它可以被解释为编译器的字符集中的可打印字符-------通常是ASCII or EBCDIC。
start_position and length
确定要返回的内部表示形式的哪个部分。
expr 为 null,则此函数返回 NULL。
该函数不支持CLOB直接作为参数。但是,可以作为通过隐式数据转换参数中传递 CLOB值。
例子如下:
SQL> select dump(1,16) from dual;
DUMP(1,16)
-----------------
Typ=2 Len=2: c1,2
SQL> select dump(1,10) from dual;
DUMP(1,10)
------------------
Typ=2 Len=2: 193,2
SQL> select dump('火狐',16) from dual;
DUMP('火狐',16)
-------------------------
Typ=96 Len=4: bb,f0,ba,fc
SQL> select dump('US',16) from dual;
DUMP('US',16)
-------------------
Typ=96 Len=2: 55,53
SQL> select dump('US',17) from dual;
DUMP('US',17)
-----------------
Typ=96 Len=2: U,S
SQL> select dump('火狐',17) from dual;
DUMP('火狐',17)
-------------------------
Typ=96 Len=4: bb,f0,ba,fc
SQL> select dump(1,17) from dual;
DUMP(1,17)
------------------
Typ=2 Len=2: c1,^B
SQL> select dump('火狐',17,1,1) from dual;
DUMP('火狐',17,1
----------------
Typ=96 Len=4: bb
SQL> select dump('火狐',17,1,2) from dual;
DUMP('火狐',17,1,2)
-------------------
Typ=96 Len=4: bb,f0
其次,了解一下Number类型数据在DUMP是如何处理的。
Number型数据经DUMP函数处理以后,输出格式如下:
Type=2 Len=×××:符号/指数位, [数字1,数字2,数字3,. . . ,数字20]
Type=2 :表示Number类型
注意:如果是负数,且总长度小于21个字节,最后加一个102(是为了排序的需要)
DUMP(number,10)是以指数的方式处理的
正数: 符号/指数位 > 128
计算公式:
指数=符号/指数位(第一字节)-193, 设 N为指数
数值1 = (数字1-1)*100^(N-0)
数值2 = (数字2-1)*100^(N-1)
.
.
.
数值20 = (数字20-1)*100^(N-19)
-------------------------------------------------------------
Number数值 sum(数值1,数值2,数值3,. . . , 数值20)
负数:符号/指数位 < 128
指数=62-符号/指数位(第一字节),设 N为指数
数值1 = (101-数字1)*100^(N-0)
数值2 = (101-数字2)*100^(N-1)
.
.
.
数值20 = (101-数字20)*100^(N-19)
-------------------------------------------------------------
Number数值 sum(数值1,数值2,数值3,. . . , 数值20)
0是区分正数和负数的分割点,0既不属于正数也不属于负数
0的以10进制方式DUMP出来的信息如下:
SQL> select dump(0) from dual;
DUMP(0)
----------------
Typ=2 Len=1: 128
根据上面的信息,我们可以计算得到16进制的DUMP信息应该是0X80,转换成二进制为1000 0000,正好是是一个字节编码最大值的一半。
以根据上面正数和负数的公式,我们计算以下数值的10和16进制的DUMP信息:
1)、150 2)、34.33 3)、-140 4)、 -333.99
第1)解题步骤:
150=100+50=100^1+ 50 ,
故根据上述,应该可以初步确认,150 DUMP函数输出格式:
Type=2 Len=3: 符号/指数位(第一字节),数字1,数字2
指数=符号/指数位(第一字节)-193 ,符号/指数位(第一字节)=194
100 ^1=(数字1-1)*100^(1-0)=(数字1-1)*100
数字1-1=1 ===> 数字1 = 2
50=(数字2-1)*100^(1-1)= (数字2-1)*1
数字2-1=50 ===> 数字2 = 51
150的DUMP函数10进制输出为: Type=2 Len=3: 194, 2, 51
根据上面,10进制194, 2, 51转换为16进制,则DUMP函数16进制为:
Type=2 Len=3: C2, 2, 33
Oracle SQL确认:
SQL> select dump(150) from dual;
DUMP(150)
---------------------
Typ=2 Len=3: 194,2,51
SQL> select dump(150,16) from dual;
DUMP(150,16)
--------------------
Typ=2 Len=3: c2,2,33
SQL>
第2)解题步骤:
33.33=33+0.33= (数字1-1)*100^(N-0)+ (数字2-1)*100^(N-1)
可以初步确认,33.33 DUMP函数输出格式:
Type=2 Len=3: 符号/指数位(第一字节),数字1,数字2
33 < 100 ===> 33 < 100^1 ===> N = 0
符号/指数位(第一字节)= 193
(数字1-1)*100^0=33 ===> 数字1=34
(数字2-1)*100^(0-1)=0.33 ===> 数字2-1 = 33 ===> 数字2=34
33.33的DUMP函数10进制输出为: Type=2 Len=3: 193, 34, 34
16进制输出格式:Type=2 Len=3: C1, 22, 22
Oracle SQL确认:
SQL> select dump(33.33,16) from dual;
DUMP(33.33,16)
---------------------
Typ=2 Len=3: c1,22,22
SQL> select dump(33.33) from dual;
DUMP(33.33)
----------------------
Typ=2 Len=3: 193,34,34
第3题忽略不做……
第4)解题步骤:
-333.99=-(300+33+0.99)=-(3*100^1+33+0.99)
是负数
可以初步确认,-333.99 DUMP函数输出格式:
Type=2 Len=5: 符号/指数位(第一字节),数字1,数字2,数字3 , 120
指数=62-符号/指数位(第一字节), 数字1上的指数是1 ,N=1
故 1=62-符号/指数位(第一字节) ===> 符号/指数位(第一字节)=61
3*100^1 = (101-数字1)*100^(N-0)= (101-数字1)*100^1 ===> 3 = (101-数字1)
数字1=98
33=(101-数字2)*100^(1-1) ===> 33= (101-数字2)
数字2=68
0.99==(101-数字3)*100^(1-2) ===> 0.99= (101-数字3)*100^-1
数字3 = 2
-333.99的DUMP函数10进制输出为: Type=2 Len=5: 61, 98, 68, 2,102
16进制输出格式:Type=2 Len=5: 3D, 62, 44,2,66
Oracle SQL确认:
SQL> select dump(-333.99) from dual;
DUMP(-333.99)
---------------------------
Typ=2 Len=5: 61,98,68,2,102
SQL> select dump(-333.99,16) from dual;
DUMP(-333.99,16)
--------------------------
Typ=2 Len=5: 3d,62,44,2,66
发表评论
-
linux重启oracle 各种方法
2013-01-15 09:53 1287来自 : http://blog.sina.com.cn/s/ ... -
SVN服务器配置
2013-01-10 22:49 1226来自:http://air-blue55.blog.163.c ... -
网页编码就是那点事
2012-11-24 16:10 944来自 : http://www.kuqin.com/webpa ... -
Tomcat 配置 CAS 的一个问题。unable to find valid certification path to requested target
2012-11-11 21:40 1538来自: http://blog.csdn.net/cool_ ... -
Tomcat SSL配置大全
2012-11-11 21:02 1216来源: http://www.iteye.com/topi ... -
Html中td自动换行问题
2012-10-25 17:57 1019来自:http://blog.csdn.net/dududu0 ... -
tomcat sso 配置
2012-05-29 23:18 1642源: http://www.oecp.cn/hi/single ... -
Hibernate 利用配置文件配置HQL/SQL
2012-05-21 17:14 1805Query.hbm.xml <?xml version= ... -
CAS工作流程
2012-05-19 22:25 1583CAS3.0的工作流程: 0.app将用户转发到CAS处, 并 ... -
jforum 表目录
2012-04-18 18:37 2946目 录 1、附件关系表JFORUM_ATTACH 2 2、附件 ... -
Jfroum集成cas单点登录
2012-04-17 21:35 15241.安装CAS 下载cas server ,设置好服务器端, ... -
JForum登录用例
2012-04-15 22:59 60711,键入用户名、密码,单击“登入”按钮,登录请求发送到/JFo ... -
tinyMCE 详细文档
2012-03-28 10:57 2129http://www.iwms.net/n2065c17.as ... -
JBPM3.1.4 相关表的 意义
2012-03-18 22:54 1005JBPM_ACTION action记录表 JBPM_DEC ... -
JBPM环境配置
2012-03-18 18:56 1827jBPM 需要数据库支持, j ... -
xfire 编写webservice例子
2012-02-23 16:51 1061来自 : http://www.blogjava.net/j ... -
ArrayUtils常用的用法
2012-02-21 10:51 1572// 1.打印数组 ArrayUtils.toString(n ... -
Tomcat自动缓存context.xml,导致在eclipse中修改后,不能立即启作用
2012-02-18 11:56 1779http://blog.csdn.net/shiqidide/ ... -
JavaScript CSS Style属性对照表
2012-02-11 22:36 1097CSS语法 (不区分大小写) JavaScript语法 (区分 ... -
JQUERY TREE
2012-01-09 14:49 1194要使用jquery.treeview.js,当然第一步是要把它 ...
相关推荐
全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt全角半角转换函数.txt...
可以实现字符串的全角到半角及半角到全角的转换,还是挺方便的,不对空格以及ascii表中其他可见字符之外的字符做任何处理,可以运行
C++全角半角字符转换
java 全角半角转换 对角对全角的转换
全角半角转换,c++
对postgresql数据库中不规则的数据批量处理查询,有些是全角的,需要转换查询,匹配,可以使用这个方法postgres全角转半角函数.txt
实现日文的全角半角转换 平假名片假名都转换
C#实现字符串全角半角转换类
全角 半角 转换器 C C++ 无需安装 小巧易用
半角全角字符转换函数 收藏 public string ToSBC(string input) { //半角转全角: char[] c=input.ToCharArray(); for (int i = 0; i ; i++) { if (c[i]==32) { c[i]=(char)12288; continue; }...
全角半角转换工具是一款可以批量将全角转换成半角,或批量将半角转换为全角的软件。全角半角转换工具支持文件导入、导出。 使用方法 1.将带有全角数字的新闻(Ctrl C)复制,在(Ctrl V)粘贴到上面文本框内。 2....
java全角半角转换程序,用到了就不用自己再动手写啦。
全角转半角,半角转全角,全角半角字符串转换工具类Character.java
利用C#开发工具开发程序,导致全角半角转换麻烦。
对全角半角字符串的处理,对全角半角字符串的处理,对全角半角字符串的处理
批量修改字母标点全角半角的方法和技巧 在文档处理过程中,经常会碰到需要批量修改字母标点全角半角的问题,这些问题看似简单,但实际上却非常繁琐。幸运的是,我们可以使用 EmEditor 等文本编辑器来批量修改字母...
公司内部项目, HR傻吊录入一些全角字符导致某些功能不生效, 然后就给产品提需求咯~ 本身MYSQL也没自带函数实现, 网上资源搜索许久, 结果都不是MYSQL相关的, 也不知怎么就各种以讹传讹. 坚持想用MYSQL实现, 最后就自...
全角半角转换工具,编程后发现问题时可以对大把的程序改变,不必再一个一个手动修改,很方便!
javascript全角符转换半角符的部分代码用于把输入的全角字符转化成半角字符
字符串,标点符号全角半角之间的相互转换。非常实用