[20190930]oracle raw类型转化number脚本.txt
[20190930]oracle raw类型转化number脚本.txt
--//写一个简单oracle raw转化number脚本,简单说明:
--//输入必须是c1,02 或者 c102,不支持c1,2格式。
--//raw2num.sh 脚本放在最后.
--//测试:
$ cat otest.txt | xargs -n 1 -I {} bash -c "./raw2num.sh {};echo {} " | paste - -
0 80
1 c1,02
2 c1,03
25 c1,1a
123 c2,02,18
4100 c2,2a
-4100 3d,3c,66
41000000 c4,2a
-41000000 3b,3c,66
132004078 c5,02,21,01,29,4f
2.01 c1,03,02
.3 c0,1f
.00000125 be,02,1a
115.200003 c2,02,10,15,01,04
-.00000125 41,64,4c,66
-.3 3f,47,66
-1 3e,64,66
-5 3e,60,66
-20032 3c,63,65,45,66
-234.432 3d,63,43,3a,51,66
999999999999999999999999999999999999999900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ff,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64
-999999999999999999999999999999999999990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 80,02
-.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 7f,64,66
123456789012345678901234567890123456789000 d5,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b
-123456789012345678901234567890123456780000 2a,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b
.123456789012345678901234567890123456789 c0,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b
-.12345678901234567890123456789012345678 3f,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b
$ cat otest.txt
80
c1,02
c1,03
c1,1a
c2,02,18
c2,2a
3d,3c,66
c4,2a
3b,3c,66
c5,02,21,01,29,4f
c1,03,02
c0,1f
be,02,1a
c2,02,10,15,01,04
41,64,4c,66
3f,47,66
3e,64,66
3e,60,66
3c,63,65,45,66
3d,63,43,3a,51,66
ff,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64
00,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02,02
80,02
7f,64,66
d5,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b
2a,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b
c0,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b,0d,23,39,4f,5b
3f,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b,59,43,2d,17,0b
$ cat raw2num.sh
#! /bin/bash
#! oracle raw convert number
odebug=${ODEBUG:-0}
# process input parameter ,delete 0x and "," and all spaces. save to variable v_raw. and its length to variable v_len.
v_raw="$*"
v_raw=${v_raw//0x/}
v_raw=${v_raw//[, ]/}
v_len=${#v_raw}
v_tmp=$(( $v_len % 2 ))
if [ $v_tmp -ne 0 -o $v_len -gt 42 ]; then
echo "$v_raw is illegal! v_len=$v_len or length of v_len>42"
exit 2
fi
if [ $odebug -eq 1 ] ; then
echo v_ram="$v_raw"
fi
if [ "$v_raw" == "80" ]; then
result=0
echo "$result"
exit 0
elif [ "$v_raw" \> "80" ]; then
v_res="0."
v_exp=$(printf "%2d" $(( "0x"${v_raw:0:2} - 0xc0 )))
if [ $odebug -eq 1 ] ; then
echo v_ram="$v_raw" v_exp="$v_exp" v_len="$v_len"
fi
for ((i=2;i<$v_len;i+=2))
do
v_tmp=$(printf "%02d" $(( "0x"${v_raw:i:2} -0x1 )))
if [ $v_tmp -lt 0 -o $v_tmp -gt 99 ]; then
echo "$v_raw is illegal! offset $i = 0x${v_raw:i:2}"
exit 3
fi
if [ $v_tmp -eq 0 -a $i -eq $(( $v_len - 2 )) ];then
echo "$v_raw is illegal! offset $i = 0x${v_raw:i:2}"
exit 3
fi
v_res=${v_res}${v_tmp}
done
#result=$(echo "scale=132; 100^${v_exp} * ${v_res} " | bc -l | tr -d '\n\\\r' | sed -e "s/\.\([0-9]*[1-9]\)0\+$/.\1/" -e "s/\.0\+$//")
else
#negative
v_res="-0."
v_exp=$(printf "%2d" $(( 0xff - "0x"${v_raw:0:2} -0xc0 )))
## substr last 2 char, normal is 0x66 (102)
v_len=$(( $v_len - 2 ))
v_last=$(printf "%02d" $(( "0x"${v_raw:v_len:2} )))
if [ $odebug -eq 1 ] ; then
echo v_ram="$v_raw" v_exp="$v_exp" v_len-2="$v_len" v_last="$v_last"
fi
if [ "$v_last" != "102" -a $v_len -lt 40 ]; then
echo "$v_raw is illegal! offset $v_len = 0x${v_raw:v_len:2}"
exit 4
fi
for ((i=2;i<$v_len;i+=2))
do
v_tmp=$(printf "%02d" $(( 0x65 - "0x"${v_raw:i:2} )))
if [ $v_tmp -lt 0 -o $v_tmp -gt 99 ]; then
echo "$v_raw is illegal! offset $i = 0x${v_raw:i:2}"
exit 3
fi
if [ $v_tmp -eq 0 -a $i -eq $(( $v_len - 2 )) ];then
echo "$v_raw is illegal! offset $i = 0x${v_raw:i:2}"
exit 3
fi
v_res=${v_res}${v_tmp}
done
if [ $v_len -eq 42 -a "$v_last" != '102' ]; then
v_tmp=$(printf "%02d" $(( 101 - $v_last )))
if [ $v_tmp -le 0 -o $v_tmp -gt 99 ]; then
echo "$v_raw is illegal! offset $v_len = 0x${v_raw:v_len:2}"
exit 3
fi
v_res=${v_res}${v_last}
fi
#result=$(echo "scale=132; 100^${v_exp} * ${v_res} " | bc -l | tr -d '\n\\\r' | sed -e "s/\.\([0-9]*[1-9]\)0\+$/.\1/" -e "s/\.0\+$//")
fi
if [ $odebug -eq 1 ] ; then
echo v_ram="$v_raw" v_exp="$v_exp" v_len="$v_len" v_res="$v_res"
fi
result=$(echo "scale=132; 100^${v_exp} * ${v_res} " | bc -l | tr -d '\n\\\r' | sed -e "s/\.\([0-9]*[1-9]\)0\+$/.\1/" -e "s/\.0\+$//")
echo "$result"
[20190930]oracle raw类型转化number脚本.txt的更多相关文章
- 修改有数据oracle字段类型 从number转为varchar
--修改有数据oracle字段类型 从number转为varchar--例:修改ta_sp_org_invoice表中RESCUE_PHONE字段类型,从number转为varchar --step1 ...
- Oracle raw类型
RAW(size):长度为size字节的原始二进制数据,size的最大值为2000字节; RAW类型好处:在网络中的计算机之间传输 RAW 数据时,或者使用 Oracle 实用程序将 RAW 数据从一 ...
- [20191013]oracle number类型存储转化脚本.txt
[20191013]oracle number类型存储转化脚本.txt --//测试看看是否可以利用bc obase=100的输出解决问题.另外以前脚本忘记考虑尾数的四舍五入问题.--//也许编程就是 ...
- [20191003]oracle number类型存储转化脚本.txt
[20191003]oracle number类型存储转化脚本.txt --//完善脚本,增加支持科学记数法.比如1e4之类的写法. 2.测试:$ cat test.txt012251234100-4 ...
- [20190920]完善vim调用sqlplus脚本.txt
[20190920]完善vim调用sqlplus脚本.txt --//以前写的http://blog.itpub.net/267265/viewspace-2140936/=>[20170617 ...
- Oracle手边常用70则脚本知识汇总
Oracle手边常用70则脚本知识汇总 作者:白宁超 时间:2016年3月4日13:58:36 摘要: 日常使用oracle数据库过程中,常用脚本命令莫不是用户和密码.表空间.多表联合.执行语句等常规 ...
- oracle字段类型
oracle 字段类型CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 byt ...
- oracle 字段类型详解
CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749 NCHAR 根据字符集而定的固定长度字符串 最大长度 ...
- [20180814]慎用查看表压缩率脚本.txt
[20180814]慎用查看表压缩率脚本.txt --//最近看exadata方面书籍,书中提供1个脚本,查看某些表采用那些压缩模式压缩比能达到多少.--//通过调用DBMS_COMPRESSION. ...
随机推荐
- git合并多次commit提交
在开发项目工程中经常会遇到为了一个需求产生多次提交记录.有些是可以接受的,比如按照功能点不同进行的提交.但往往会存在这种,只为了一个小东西进行改动,比如多余文件的提交.书写不规范而不得不提交的情况.多 ...
- [20191031]完善vim的bccalc插件7.txt
[20191031]完善vim的bccalc插件7.txt --//增加/ 2^16 %2^16功能,输入\tx,例子:1398145029 = /2^16 %2^16 (type and mode ...
- MySQL问题记录——2003-Can't connect to MySQL server on 'localhost'(10038)
MySQL问题记录——2003-Can't connect to MySQL server on 'localhost'(10038) 摘要:本文主要记录了连接到MySQL数据库时出现的问题以及解决办 ...
- Linux-3.14.12内存管理笔记【伙伴管理算法(3)】
前面分析了伙伴管理算法的初始化,在切入分析代码实现之前,例行先分析一下其实现原理. 伙伴管理算法(也称之为Buddy算法),该算法将所有空闲的页面分组划分为MAX_ORDER个页面块链表进行管理,其中 ...
- 实操《kubernetes网络权威指南》之tun设备
跟着网上作一次,OK的. tun.c #include <net/if.h> #include <sys/ioctl.h> #include <sys/stat.h> ...
- 调用百度语音AI实现语音的识别和合成
#coding:utf-8 ## 先去ffmpeg官网下载(https://ffmpeg.zeranoe.com/builds/),好了之后解压缩,配一下环境变量 ## 打开cmd,运行命令,安装如下 ...
- String的源码理解(未写完)
String本质上是一个char数组(jdk 9之后是byte数组),并且是一个声明为final的数组,并且String的不可变也是通过这种把数组声明为final来实现的 public final c ...
- SQL Server 约束的增删改
1. 非空约束 列的为空性决定表中的行是否可以包含空值.空置(NULL)不同于零(0)/空白或者长度为零的字符串(“”). (1)创建非空约束 create table orders ( docent ...
- 小程序-API请求
Page({ onLoad:function(){ // 在onLoad中调用发送请求的函数 this.getProList(); } getProList:function(){ var self= ...
- expect实现非交互下的ssh连接, expect简单使用整理
1. shell中使用ssh远程连接服务器做一些事情通常需要交互输入些信息, 可使用expect语句解决: 2. expect中设置变量语法: set name xxx set age xxx ...