MYSQL教程之[HOWTO]ORACLE中怎样完成ASC字符串和16...
尽管DBaaS模式有缺点,但它还是适合某些客户群体,这为解决方案提供商提供了新的商机。鉴于云服务的增长,解决方案提供商除了拥抱这些技术还有什么选择呢?如果他们不这样做,他们就会冒着被竞争对手击败的风险。但他们不能只想到如何把DBaaS的利润率与企业内部系统相比较。oracle|转换|字符串ORACLE中怎样完成ASC字符串和16进制串相互转换
接待人人同我交换:enhydraboyenhydra_boy@tom.com
接待转载,请保存本声明,感谢!
上面是笔者之前回覆csdn论坛上成绩的总结,但愿对人人有效。
ASC字符串==>16进制串
createorreplacefunctionAscToHex(sInINvarchar2)
RETURNvarchar2
IS
sTmpvarchar2(4000);
iinteger;
BEGIN
i:=1;
stmp:=;
foriin1..length(sIn)loop
sTmp:=sTmp||trim(to_char(ascii(substr(sIn,i,1)),XXXX));
endloop;
returnsTmp;
END;
/
16进制串==>ASC字符串
要辨别字符集,以中笔墨符为例,关于数据库字符集是中文,要包管可以准确转返来,要有所分歧。
数据库字符集是中文
createorreplacefunctionHexToAsc(sInINvarchar2)
RETURNvarchar2
IS
sTmpvarchar2(4000);
iinteger;
xinteger;
BEGIN
i:=1;
stmp:=;
loop
exitwheni>length(sIn);
x:=to_number(substr(sIn,i,2),XXXX);
ifx>128then
sTmp:=sTmp||chr(to_number(substr(sIn,i,4),XXXX));
i:=i+4;
else
sTmp:=sTmp||chr(to_number(substr(sIn,i,2),XXXX));
i:=i+2;
endif;
endloop;
returnsTmp;
END;
/
数据库字符集是英文
createorreplacefunctionHexToAsc(sInINvarchar2)
RETURNvarchar2
IS
sTmpvarchar2(4000);
iinteger;
BEGIN
i:=1;
stmp:=;
loop
exitwheni>length(sIn);
sTmp:=sTmp||chr(to_number(substr(sIn,i,2),XXXX));
i:=i+2;
endloop;
returnsTmp;
END;
/
测试,以下:
SQL>selecthextoasc(asctohex(你好ABC么))fromdual;
HEXTOASC(ASCTOHEX(拿好ABC么))
--------------------------------------------------------------------------------
你好ABC么
MySQL的双许可模式意味着,那些希望对数据库具有额外控制的人可以直接从数据库厂商那儿得到帮助。MySQLAB公司提供了支持和维护服务,诸如代码更新和补丁修补服务等,每年订阅费为大约3000美元。 也可谈一下你是怎么优化存储过程的? 备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。 多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。 SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。) 学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了! 两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书 而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
页:
[1]