DB2中创建一个获取汉字拼音首字母的SQL函数(二)

日期: 2008-07-16 作者:Ernest 来源:TechTarget中国 英文

实现


接下来很方便的就可以写出这个函数的具体实现,在实现的代码中,我们又加入了针对英文字母的处理,函数编译后,可通过如下方式调用:


select getIndex( ’索’ ) index from dual;


index


——


f


原代码如下


create function getIndex (


in_strChn varchar(2)


) returns char(1)


language sql


external action


reads sql data


begin atomic


declare chresult char(1);


declare n integer default 0;


if( in_strChn = ’’ or in_strChn is null or lengthb( in_strChn ) > 2 ) then


return null;


end if;


if(( ascii( in_strChn ) >= ascii(’A’) and ascii( in_strChn ) <= ascii(’Z’) )


or ( ascii( in_strChn ) >= ascii(’a’) and ascii( in_strChn ) <= ascii(’z’)) ) then


return lcase( substr( in_strChn, 1, 1 ) );


end if;


for myloop as


select t2.strChn


from ( select t1.strChn


from ( select ’澳’ strChn from sysibm.sysdummy1


union all


select ’怖’ strChn from sysibm.sysdummy1


union all


select ’错’ strChn from sysibm.sysdummy1


union all


select ’堕’ strChn from sysibm.sysdummy1


union all


select ’贰’ strChn from sysibm.sysdummy1


union all


select ’咐’ strChn from sysibm.sysdummy1


union all


select ’过’ strChn from sysibm.sysdummy1


union all


select ’祸’ strChn from sysibm.sysdummy1


union all


select ’祸’ strChn from sysibm.sysdummy1


union all


select ’骏’ strChn from sysibm.sysdummy1


union all


select ’阔’ strChn from sysibm.sysdummy1


union all


select ’络’ strChn from sysibm.sysdummy1


union all


select ’穆’ strChn from sysibm.sysdummy1


union all


select ’诺’ strChn from sysibm.sysdummy1


union all


select ’沤’ strChn from sysibm.sysdummy1


union all


select ’瀑’ strChn from sysibm.sysdummy1


union all


select ’群’ strChn from sysibm.sysdummy1


union all


select ’弱’ strChn from sysibm.sysdummy1


union all


select ’所’ strChn from sysibm.sysdummy1


union all


select ’唾’ strChn from sysibm.sysdummy1


union all


select ’唾’ strChn from sysibm.sysdummy1


union all


select ’唾’ strChn from sysibm.sysdummy1


union all


select ’误’ strChn from sysibm.sysdummy1


union all


select ’迅’ strChn from sysibm.sysdummy1


union all


select ’孕’ strChn from sysibm.sysdummy1


union all


select ’座’ strChn from sysibm.sysdummy1


union all


select in_strChn strChn from sysibm.sysdummy1


) as t1


order by t1.strChn


) as t2


do


if ( strChn = in_strChn ) then


set chresult = chr( ascii(’a’) + ( case n when 26 then n-1 else n end ) );


return chresult;


end if;


set n = n + 1;


end for;


return chresult;


end@


实际使用中,应注意建立数据库时字符集参数的设置,应使用GBK字符集。


应用以下命令查看已建立数据库的字符集:


db2 connect to db_name user user_name using password


db2 get db cfg | grep -i ’code set’


此参数在数据库建立之后不能修改。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Ernest
Ernest

相关推荐

  • Azure数据湖分析从U-SQL中获得提升

    大数据的发展已经让许多精通SQL的数据专业人员不知所措。微软的U-SQL编程语言试图让这些人回归数据查询游戏。

  • TT百科:SQL(结构化查询语言)

    一般来说,SQL-on-Hadoop仍是一项新兴技术,但随着各个公司寻求获得拥有大数据应用程序编程SQL技能的开发和分析人员,它们正逐渐成为Hadoop部署的固定组件。

  • SQL和NoSQL数据库设计之争

    企业收集了很多大规模增长的松散结构化数据,Hadoop,Spark以及其他新技术处理这些数据非常有助于改善商业智能分析效率。

  • 数据库产品巡礼:IBM DB2概览

    IBM DB2关系型数据库管理系统提供了支持多平台系统的关键技术,它具备较高的可用性和良好的性能。