DECODE函数的作用 它可以将输入数值与函数中的参数列表相比较 根据输入值返回一个对应值 函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式 当然 如果未能与任何一个实参序偶匹配成功 则函数也有默认的返回值
创新互联公司是一家集网站建设,惠阳企业网站建设,惠阳品牌网站建设,网站定制,惠阳网站建设报价,网络营销,网络优化,惠阳网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
DECODE函数的作用 它可以将输入数值与函数中的参数列表相比较 根据输入值返回一个对应值 函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式 当然 如果未能与任何一个实参序偶匹配成功 则函数也有默认的返回值
区别于SQL的其它函数 DECODE函数还能识别和操作空值
语法如下
DECODE(control_value value result [ value result …][ default_result]);
control _value
试图处理的数值 DECODE函数将该数值与后面的一系列的偶序相比较 以决定返回值
value
是一组成序偶的数值 如果输入数值与之匹配成功 则相应的结果将被返回 对应一个空的返回值 可以使用关键字NULL于之对应
result
是一组成序偶的结果值
default_result 未能与任何一个值匹配时 函数返回的默认值
示例如下
select decode( x ‘x is ’ ‘x is ’ ‘others’) from dual
当x等于 时 则返回‘x is ’
当x等于 时 则返回‘x is ’
否则 返回others’
在需要比较 个值的时候 我们可以配合SIGN()函数一起使用
SELECT DECODE( SIGN( ) Is Positive Is Nagative Is Zero )
同样 也可以用CASE实现
SELECT CASE SIGN( )
WHEN THEN Is Positive
WHEN THEN Is Nagative
ELSE Is Zero END
FROM DUAL
另外 大家还可以在Order by中使用Decode
例 表table_subject 有subject_name列 要求按照 语 数 外的顺序进行排序 这时 就可以非常轻松的使用Decode完成要求了
lishixinzhi/Article/program/Oracle/201311/19054
如何解密Oracle Warp加密过程
Oracle加密的原理就是先对源码进行lz压缩lzstr,然后对压缩数据进行SHA-1运算得到40位的加密串shstr,然后将加密串与压缩串拼接得到shstr+lzstr,然后对拼接后的字符串进行Oracle双字符转换(转换表)。最后将转换后的字符串进行base64编码,最终得到wrap的加密串。
可以例用Oracle
自带的Wrap工具实现,此工具在$ORACLE_HOME/BIN目录下,具体如下
1、设置字符集环境变量
set
NLS_LANG=CHINESE_CHINA.ZHS16GBK
2、创建一个存储过程文件
在E:\下创建test.sql文件,内容如下:
create
or
replace
procedure
test1...
MD5解密方法
我在存储数据库的时候,通过md5加密方法将字段进行加密,当我在读取该字段时如何正确的读取原来的值啊
------解决方案--------------------
没办法,MD5是不可逆的。
你需要使用可逆加密算法。
------解决方案--------------------
插入表中的时候md5加密
比如:
$sql= "insert into register(names,pswd,repswd) values( '$_POST[names] ',md5( '$_POST[pswd] '),md5( '$_POST[repswd] ')) ";
$qid=mysql_query($sql);
读取的时候
$pswd=empty($_POST[ 'pswd '])? ' ':md5($_POST[ 'pswd ']);
------解决方案--------------------
如果业务要求可还原,那么不要采用MD5,请使用可逆加密算法,如DES加密。
MD5为不可逆散列算法,可用于存储用户密码,存储后不需要永远不需要知道明文。密码比较时只需将用户输入的密码再次转成MD5码与存储的相比较即可得知用户输入密码是否正确。
linux/unix操作系统一般采用MD5进行用户密码加密。
------解决方案--------------------
MD5目前所谓的破解只是采用碰撞法找到了对等因子。
比如:string1的MD5码为MD1,而现在我们做到的只是又找到了一个string2,它的MD5码也是MD1。
结果就是:用户登陆某采用MD5加密的系统时,本来密码是12345,现在可能用abcde也能登陆。
想想可能还原吗?如果可以还原,那天大的信息也能用32位长的字符串表示了,这不成了超级压缩算法了吗,整个宇宙的信息都可以用32位长表示了。不可逆的!
(1)DES加密函数
create
or
replace
function
encrypt_des(p_text
varchar2,
p_key
varchar2)
return
varchar2
is
v_text
varchar2(4000);
v_enc
varchar2(4000);
raw_input
RAW(128)
;
key_input
RAW(128)
;
decrypted_raw
RAW(2048);
begin
v_text
:=
rpad(
p_text,
(trunc(length(p_text)/8)+1)*8,
chr(0));
raw_input
:=
UTL_RAW.CAST_TO_RAW(v_text);
key_input
:=
UTL_RAW.CAST_TO_RAW(p_key);
dbms_obfuscation_toolkit.DESEncrypt(input
=
raw_input,key
=
key_input,encrypted_data
=decrypted_raw);
v_enc
:=
rawtohex(decrypted_raw);
dbms_output.put_line(v_enc);
return
v_enc;
end;
(2)DES解密函数
create
or
replace
function
decrypt_des(p_text
varchar2,p_key
varchar2)
return
varchar2
is
v_text
varchar2(2000);
begin
dbms_obfuscation_toolkit.DESDECRYPT(input_string
=
UTL_RAW.CAST_TO_varchar2(p_text),key_string
=p_key,
decrypted_string=
v_text);
v_text
:=
rtrim(v_text,chr(0));
dbms_output.put_line(v_text);
return
v_text;
end;
(3)MD5加密函数
CREATE
OR
REPLACE
FUNCTION
MD5(passwd
IN
VARCHAR2)
RETURN
VARCHAR2
IS
retval
varchar2(32);
BEGIN
retval
:=
utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING
=
passwd))
;
RETURN
retval;
END;
(4)函数使用示例
DES加密:
update
tb_salarysign_staff
s
set
s.staffpwd
=encrypt_des(s.staffpwd,
'test#5124*!de');
DES解密:select
decrypt_des(s.staffpwd,
'test#5124*!de')
from
tb_salarysign_staff
s
MD5加密:
update
tb_salarysign_staff
s
set
s.staffpwd
=
md5(s.staffpwd);
通过配置本地数据库的tns配置文件实现:
去oracle安装目录下oracle\product\10.2.0\db_2\NETWORK\ADMIN\ 找到tnsnames.ora,用记事本打开,里边有远程数据库的tns连接配置串如下
ORCL23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.23)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCL)
)
)
添加好ip、端口和目标数据库的实例名(SID),然后确保tns名称(ORCL23)在整个文档中唯一,保存后打开数据库连接工具,输入远程数据库上的用户名密码,选择数据库对象为你配置的连接名就可以了