从网络上收刮了一些,以备后用

  1. create function fun_getPY(@str nvarchar())
  2. returns nvarchar()
  3. as
  4. begin
  5. declare @word nchar(),@PY nvarchar()
  6. set @PY=''
  7. while len(@str)>
  8. begin
  9. set @word=left(@str,)
  10. --如果非汉字字符,返回原字符
  11. set @PY=@PY+(case when unicode(@word) between and +
  12. then (select top PY from (
  13. select 'A' as PY,N'驁' as word
  14. union all select 'B',N'簿'
  15. union all select 'C',N'錯'
  16. union all select 'D',N'鵽'
  17. union all select 'E',N'樲'
  18. union all select 'F',N'鰒'
  19. union all select 'G',N'腂'
  20. union all select 'H',N'夻'
  21. union all select 'J',N'攈'
  22. union all select 'K',N'穒'
  23. union all select 'L',N'鱳'
  24. union all select 'M',N'旀'
  25. union all select 'N',N'桛'
  26. union all select 'O',N'漚'
  27. union all select 'P',N'曝'
  28. union all select 'Q',N'囕'
  29. union all select 'R',N'鶸'
  30. union all select 'S',N'蜶'
  31. union all select 'T',N'籜'
  32. union all select 'W',N'鶩'
  33. union all select 'X',N'鑂'
  34. union all select 'Y',N'韻'
  35. union all select 'Z',N'咗'
  36. ) T
  37. where word>=@word collate Chinese_PRC_CS_AS_KS_WS
  38. order by PY ASC) else @word end)
  39. set @str=right(@str,len(@str)-)
  40. end
  41. return @PY
  42. end
  43. --函数调用实例:
  44. --select dbo.fun_getPY('中华人民共和国')
  45. -----------------------------------------------------------------
  46. --可支持大字符集20000个汉字!
  47. create function f_ch2py(@chn nchar())
  48. returns char()
  49. as
  50. begin
  51. declare @n int
  52. declare @c char()
  53. set @n =
  54.  
  55. select @n = @n +,
  56. @c = case chn when @chn then char(@n) else @c end
  57. from(
  58. select top * from (
  59. select chn =
  60. '吖' union all select
  61. '八' union all select
  62. '嚓' union all select
  63. '咑' union all select
  64. '妸' union all select
  65. '发' union all select
  66. '旮' union all select
  67. '铪' union all select
  68. '丌' union all select --because have no 'i'
  69. '丌' union all select
  70. '咔' union all select
  71. '垃' union all select
  72. '嘸' union all select
  73. '拏' union all select
  74. '噢' union all select
  75. '妑' union all select
  76. '七' union all select
  77. '呥' union all select
  78. '仨' union all select
  79. '他' union all select
  80. '屲' union all select --no 'u'
  81. '屲' union all select --no 'v'
  82. '屲' union all select
  83. '夕' union all select
  84. '丫' union all select
  85. '帀' union all select @chn) as a
  86. order by chn COLLATE Chinese_PRC_CI_AS
  87. ) as b
  88. return(@c)
  89. end
  90. go
  91.  
  92. select dbo.f_ch2py('中') --Z
  93. select dbo.f_ch2py('国') --G
  94. select dbo.f_ch2py('人') --R
  95. select dbo.f_ch2py('镆') --M
  96. go
  97. -----------------调用
  98. CREATE FUNCTION F_GetHelpCode (
  99. @cName VARCHAR() )
  100. RETURNS VARCHAR()
  101. AS
  102. BEGIN
  103. DECLARE @i SMALLINT, @L SMALLINT , @cHelpCode VARCHAR(), @e VARCHAR(), @iAscii SMALLINT
  104. SELECT @i=, @L= , @cHelpCode=''
  105. while @L<= AND @i<=LEN(@cName) BEGIN
  106. SELECT @e=LOWER(SUBSTRING(@cname,@i,))
  107. SELECT @iAscii=ASCII(@e)
  108. IF @iAscii>= AND @iAscii <= OR @iAscii>= AND @iAscii <= or @iAscii=
  109. SELECT @cHelpCode=@cHelpCode +@e
  110. ELSE
  111. IF @iAscii>= AND @iAscii <=
  112. SELECT @cHelpCode=@cHelpCode + dbo.f_ch2py(@e)
  113. ELSE SELECT @L=@L-
  114. SELECT @i=@i+, @L=@L+ END
  115. RETURN @cHelpCode
  116. END
  117. GO
  118.  
  119. --调用
  120. select dbo.F_GetHelpCode('大力')
  121. ------------------------------------------------
  122. /*
  123. 函数名称:GetPY
  124. 实现功能:将一串汉字输入返回每个汉字的拼音首字母
  125. 如输入-->'经营承包责任制'-->输出-->JYCBZRZ.
  126. 完成时间:2005-09-18
  127. 作者:郝瑞军
  128. 参数:@str-->是你想得到拼音首字母的汉字
  129. 返回值:汉字的拼音首字母
  130. */
  131. create function GetPY(@str varchar())
  132. returns varchar()
  133. as
  134. begin
  135. declare @cyc int,@length int,@str1 varchar(),@charcate varbinary()
  136. set @cyc=--从第几个字开始取
  137. set @length=len(@str)--输入汉字的长度
  138. set @str1=''--用于存放返回值
  139. while @cyc<=@length
  140. begin
  141. select @charcate=cast(substring(@str,@cyc,) as varbinary)--每次取出一个字并将其转变成二进制,便于与GBK编码表进行比较
  142. if @charcate>=0XB0A1 and @charcate<=0XB0C4
  143. set @str1=@str1+'A'--说明此汉字的首字母为A,以下同上
  144. else if @charcate>=0XB0C5 and @charcate<=0XB2C0
  145. set @str1=@str1+'B'
  146. else if @charcate>=0XB2C1 and @charcate<=0XB4ED
  147. set @str1=@str1+'C'
  148. else if @charcate>=0XB4EE and @charcate<=0XB6E9
  149. set @str1=@str1+'D'
  150. else if @charcate>=0XB6EA and @charcate<=0XB7A1
  151. set @str1=@str1+'E'
  152. else if @charcate>=0XB7A2 and @charcate<=0XB8C0
  153. set @str1=@str1+'F'
  154. else if @charcate>=0XB8C1 and @charcate<=0XB9FD
  155. set @str1=@str1+'G'
  156. else if @charcate>=0XB9FE and @charcate<=0XBBF6
  157. set @str1=@str1+'H'
  158. else if @charcate>=0XBBF7 and @charcate<=0XBFA5
  159. set @str1=@str1+'J'
  160. else if @charcate>=0XBFA6 and @charcate<=0XC0AB
  161. set @str1=@str1+'K'
  162. else if @charcate>=0XC0AC and @charcate<=0XC2E7
  163. set @str1=@str1+'L'
  164. else if @charcate>=0XC2E8 and @charcate<=0XC4C2
  165. set @str1=@str1+'M'
  166. else if @charcate>=0XC4C3 and @charcate<=0XC5B5
  167. set @str1=@str1+'N'
  168. else if @charcate>=0XC5B6 and @charcate<=0XC5BD
  169. set @str1=@str1+'O'
  170. else if @charcate>=0XC5BE and @charcate<=0XC6D9
  171. set @str1=@str1+'P'
  172. else if @charcate>=0XC6DA and @charcate<=0XC8BA
  173. set @str1=@str1+'Q'
  174. else if @charcate>=0XC8BB and @charcate<=0XC8F5
  175. set @str1=@str1+'R'
  176. else if @charcate>=0XC8F6 and @charcate<=0XCBF9
  177. set @str1=@str1+'S'
  178. else if @charcate>=0XCBFA and @charcate<=0XCDD9
  179. set @str1=@str1+'T'
  180. else if @charcate>=0XCDDA and @charcate<=0XCEF3
  181. set @str1=@str1+'W'
  182. else if @charcate>=0XCEF4 and @charcate<=0XD1B8
  183. set @str1=@str1+'X'
  184. else if @charcate>=0XD1B9 and @charcate<=0XD4D0
  185. set @str1=@str1+'Y'
  186. else if @charcate>=0XD4D1 and @charcate<=0XD7F9
  187. set @str1=@str1+'Z'
  188. set @cyc=@cyc+--取出输入汉字的下一个字
  189. end
  190. return @str1--返回输入汉字的首字母
  191. end
  192. --测试数据
  193. --select dbo.GetPY('从来就是这样酷,我酷,就是酷,看你能把我怎么样,哈哈')
  194. ------------------------------------------------------------------

sql 汉字转首字母拼音的更多相关文章

  1. sql server 利用首字母拼音排序和笔画排序的语句

    --按笔画排序 select * from Student order by Sname COLLATE Chinese_PRC_Stroke_CS_AS_KS_WS --按字母拼音排序 select ...

  2. oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等)

        oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等)   效果如下: Oracle 字符集 GBK 没有问题 , UTF -8 需要修改一下   Sql代码   --oracle汉字转拼 ...

  3. JS实现获取汉字首字母拼音、全拼音及混拼音的方法

    本文实例讲述了JS实现获取汉字首字母拼音.全拼音及混拼音的方法.分享给大家供大家参考,具体如下: 这里需要用到一个js获取汉字拼音的插件,可点击此处本站下载. 运行效果如下: 完整示例代码: ? 1 ...

  4. SQLSERVER中汉字提取首字母的拼音函数的实现

    --创建一个汉字提取首字母的函数--还存在一点小小的问题(符号?)create function hs(@a varchar(1000)='')returns varchar(1000)asbegin ...

  5. Android -- 获取汉字的首字母

    转换                                                                                             获取一个汉 ...

  6. 终结者:借助pinyin4j相关jar包提取汉字的首字母

    import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCase ...

  7. Code:获取指定汉字的首字母

    ylbtech-Code:获取指定汉字的首字母 1.获取指定汉字的首字母返回顶部 1. /// <summary> /// 获取指定汉字的首字母 /// </summary> ...

  8. C# 常用类库(字符串处理,汉字首字母拼音,注入攻击,缓存操作,Cookies操作,AES加密等)

    十年河东,十年河西,莫欺少年穷 学无止境,精益求精 记录下字符串类库,方便今后查阅 主要包含了字符串解决,去除HTML,SQL注入攻击检测,IP地址处理,Cookies操作,根据身份证获取性别.姓名. ...

  9. c#获取汉字首字母拼音

    /* * 由SharpDevelop创建. * 用户: lenovo * 日期: 2013/10/22 * 时间: 20:15 * * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件 */ ...

随机推荐

  1. 动态规划(斜率优化):[CEOI2004]锯木厂选址

    锯木场选址(CEOI2004) 从山顶上到山底下沿着一条直线种植了n棵老树.当地的政府决定把他们砍下来.为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂. 木材只能按照一个方向运输:朝山下运.山脚下有 ...

  2. 数据结构(跳跃表):NOI 2004 郁闷的出纳员

    郁闷的出纳员 [问题描述] OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常, ...

  3. poj 1961 Period【求前缀的长度,以及其中最小循环节的循环次数】

    Period Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 14653   Accepted: 6965 Descripti ...

  4. python-类和对象(属性、方法)的动态绑定

    动态绑定 # coding=utf-8 ''' 当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性 ''' from types im ...

  5. JS中timestamp日期类型的转换

    在JS中获取timestamp:var timestamp=Math.round(new Date().getTime()/1000); 在JS中将timestamp转换为Date: Date.pro ...

  6. 分布式锁1 Java常用技术方案(转)

    转:http://www.cnblogs.com/PurpleDream/p/5559352.html#3450419 前言:       由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临 ...

  7. Android WebView Error – Uncaught TypeError: Cannot call method ‘getItem’ of null at

    本质原因是js 没有判断dom 是否加载完毕 其实就是在dom 加载完毕之后处理事件 wv.getSettings().setDomStorageEnabled(true); 转自 蛙齋  http: ...

  8. Sublime 注册码

    ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EEB94 BC ...

  9. Android 网络技术HTTP

    1.XML3种解析方式(DOM.SAX.PULL) 在网络上传输数据时最常用的格式有两种,XML 和JSON 这里首先明白什么是SAX是一个用于处理XML事件驱动的"推"模型,优点 ...

  10. ORACLE 11G EXP导出空表方法

    EXP在导出11G的库的时候,与过去10G,9I的版本有很大的差别. 就是没有数据的表是不会分配空间的. 从Oracle 11.2.0.1版本开始,Oracle又提供了一种新的空间分配方法: Crea ...