首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Access >

Access 取出汉字的拼音解决办法

2012-03-03 
Access 取出汉字的拼音select*from表名whereTitlike% +Request[ strname ].ToString()+ % )Request[

Access 取出汉字的拼音
select   *   from   表名   where   Tit   like   '% "+Request[ "strname "].ToString()+ "% ')


        Request[ "strname "].ToString()     这是在查询的时间传入的关健字(此时传入的是拼音).
    这就是我的主要一个查询语句,为了解决查询的时候,不能很方便的查询中文,我通过函数转换了传入的参数为拼音.
            现在的问题就是   怎么把[Tit]这个字段的值也转换成拼音?(存入的是汉字).

[解决办法]
到具体的语言版块去问吧,参考
hzqp( "一 ")

Public Function HZQP(expression As String, Optional delimiter As String = " ", Optional limit As Integer = -1) As String

'expression
' 必需的?包含要转换的字符串?
'delimiter
' 可选的。用于标识分隔拼音的字符串字符。如果忽略,则使用空格字符( " ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回仅包含一个元素,即完整的 expression字符串。
'limit
' 可选的。要返回拼音字符数,–1表示返回所有的拼音字符数,1表示返回拼音首字母。


Dim STR As String, arrWord(400) As String
Dim i As Integer, j As Integer
arrWord(1) = "吖a "
arrWord(2) = "哎ai "
arrWord(3) = "腤an "
arrWord(4) = "肮ang "
arrWord(5) = "凹ao "
arrWord(6) = "八ba "
arrWord(7) = "挀bai "
arrWord(8) = "扳ban "
arrWord(9) = "邦bang "
arrWord(10) = "勹bao "
arrWord(11) = "陂bei "
arrWord(12) = "奔ben "
arrWord(13) = "崩beng "
arrWord(14) = "皀bi "
arrWord(15) = "边bian "
arrWord(16) = "杓biao "
arrWord(17) = "憋bie "
arrWord(18) = "邠bin "
arrWord(19) = "仌bing "
arrWord(20) = "拨bo "
arrWord(21) = "峬bu "
arrWord(22) = "嚓ca "
arrWord(23) = "猜cai "
arrWord(24) = "飡can "
arrWord(25) = "仓cang "
arrWord(26) = "撡cao "
arrWord(27) = "冊ce "
arrWord(28) = "嵾cen "
arrWord(29) = "噌ceng "
arrWord(30) = "*cha "
arrWord(31) = "拆chai "
arrWord(32) = "辿chan "
arrWord(33) = "伥chang "
arrWord(34) = "抄chao "
arrWord(35) = "车che "
arrWord(36) = "抻chen "
arrWord(37) = "阷cheng "
arrWord(38) = "吃chi "
arrWord(39) = "充chong "
arrWord(40) = "抽chou "
arrWord(41) = "出chu "
arrWord(42) = "搋chuai "
arrWord(43) = "巛chuan "
arrWord(44) = "刅chuang "
arrWord(45) = "吹chui "
arrWord(46) = "旾chun "
arrWord(47) = "踔chuo "
arrWord(48) = "呲ci "
arrWord(49) = "从cong "
arrWord(50) = "凑cou "
arrWord(51) = "粗cu "
arrWord(52) = "汆cuan "
arrWord(53) = "崔cui "
arrWord(54) = "邨cun "
arrWord(55) = "搓cuo "
arrWord(56) = "咑da "
arrWord(57) = "呆dai "
arrWord(58) = "丹dan "
arrWord(59) = "当dang "
arrWord(60) = "刀dao "
arrWord(61) = "恴de "
arrWord(62) = "灯deng "
arrWord(63) = "仾di "
arrWord(64) = "敁dian "
arrWord(65) = "刁diao "
arrWord(66) = "爹die "
arrWord(67) = "丁ding "
arrWord(68) = "丟diu "
arrWord(69) = "东dong "
arrWord(70) = "剅dou "
arrWord(71) = "嘟du "
arrWord(72) = "耑duan "
arrWord(73) = "垖dui "


arrWord(74) = "吨dun "
arrWord(75) = "多duo "
arrWord(76) = "妸e "
arrWord(77) = "奀en "
arrWord(78) = "儿er "
arrWord(79) = "发fa "
arrWord(80) = "帆fan "
arrWord(81) = "方fang "
arrWord(82) = "飞fei "
arrWord(83) = "分fen "
arrWord(84) = "丰feng "
arrWord(85) = "仏fo "
arrWord(86) = "紑fou "
arrWord(87) = "夫fu "
arrWord(88) = "旮ga "
arrWord(89) = "该gai "
arrWord(90) = "干gan "
arrWord(91) = "冈gang "
arrWord(92) = "皋gao "
arrWord(93) = "戈ge "
arrWord(94) = "给gei "
arrWord(95) = "根gen "
arrWord(96) = "更geng "
arrWord(97) = "工gong "
arrWord(98) = "勾gou "
arrWord(99) = "估gu "
arrWord(100) = "瓜gua "
arrWord(101) = "乖guai "
arrWord(102) = "关guan "
arrWord(103) = "光guang "
arrWord(104) = "归gui "
arrWord(105) = "衮gun "
arrWord(106) = "呙guo "
arrWord(107) = "铪ha "
arrWord(108) = "嗨hai "
arrWord(109) = "佄han "
arrWord(110) = "夯hang "
arrWord(111) = "蒿hao "
arrWord(112) = "诃he "
arrWord(113) = "黒hei "
arrWord(114) = "拫hen "
arrWord(115) = "亨heng "
arrWord(116) = "叿hong "
arrWord(117) = "侯hou "
arrWord(118) = "乎hu "
arrWord(119) = "花hua "
arrWord(120) = "怀huai "
arrWord(121) = "欢huan "
arrWord(122) = "巟huang "
arrWord(123) = "灰hui "
arrWord(124) = "昏hun "
arrWord(125) = "吙huo "
arrWord(126) = "丌ji "
arrWord(127) = "加jia "
arrWord(128) = "戋jian "
arrWord(129) = "江jiang "
arrWord(130) = "艽jiao "
arrWord(131) = "阶jie "
arrWord(132) = "巾jin "
arrWord(133) = "坕jing "
arrWord(134) = "冂jiong "
arrWord(135) = "丩jiu "
arrWord(136) = "凥ju "
arrWord(137) = "姢juan "
arrWord(138) = "噘jue "
arrWord(139) = "军jun "
arrWord(140) = "咔ka "
arrWord(141) = "开kai "
arrWord(142) = "刊kan "
arrWord(143) = "忼kang "
arrWord(144) = "*kao "
arrWord(145) = "匼ke "
arrWord(146) = "肎ken "
arrWord(147) = "劥keng "
arrWord(148) = "空kong "
arrWord(149) = "抠kou "
arrWord(150) = "郀ku "
arrWord(151) = "夸kua "
arrWord(152) = "蒯kuai "
arrWord(153) = "宽kuan "
arrWord(154) = "匡kuang "
arrWord(155) = "亏kui "
arrWord(156) = "坤kun "
arrWord(157) = "扩kuo "
arrWord(158) = "垃la "
arrWord(159) = "来lai "
arrWord(160) = "兰lan "
arrWord(161) = "啷lang "
arrWord(162) = "捞lao "
arrWord(163) = "仂le "
arrWord(164) = "雷lei "
arrWord(165) = "塄leng "
arrWord(166) = "唎li "
arrWord(167) = "俩lia "
arrWord(168) = "嫾lian "
arrWord(169) = "簗liang "
arrWord(170) = "蹽liao "
arrWord(171) = "咧lie "
arrWord(172) = "邻lin "
arrWord(173) = "伶ling "
arrWord(174) = "溜liu "


arrWord(175) = "囖lo "
arrWord(176) = "龙long "
arrWord(177) = "娄lou "
arrWord(178) = "露lu "
arrWord(179) = "驴lv "
arrWord(180) = "孪luan "
arrWord(181) = "掠lue "
arrWord(182) = "抡lun "
arrWord(183) = "頱luo "
arrWord(184) = "妈ma "
arrWord(185) = "埋mai "
arrWord(186) = "颟man "
arrWord(187) = "牤mang "
arrWord(188) = "猫mao "
arrWord(189) = "庅me "
arrWord(190) = "沒mei "
arrWord(191) = "椚men "
arrWord(192) = "掹meng "
arrWord(193) = "咪mi "
arrWord(194) = "芇mian "
arrWord(195) = "喵miao "
arrWord(196) = "乜mie "
arrWord(197) = "民min "
arrWord(198) = "名ming "
arrWord(199) = "谬miu "
arrWord(200) = "摸mo "

[解决办法]
--参考SQL Server中的处理方法:


CREATE function fn_GetPy(@str nvarchar(4000))
returns nvarchar(4000)
--WITH ENCRYPTION
as
begin
declare @intLenint
declare @strRetnvarchar(4000)
declare @temp nvarchar(100)

set @intLen = len(@str)
set @strRet = ' '

while @intLen > 0
begin
set @temp = ' '

select @temp = case
when substring(@str,@intLen,1) > = '帀 ' then 'Z '
when substring(@str,@intLen,1) > = '丫 ' then 'Y '
when substring(@str,@intLen,1) > = '夕 ' then 'X '
when substring(@str,@intLen,1) > = '屲 ' then 'W '
when substring(@str,@intLen,1) > = '他 ' then 'T '
when substring(@str,@intLen,1) > = '仨 ' then 'S '
when substring(@str,@intLen,1) > = '呥 ' then 'R '
when substring(@str,@intLen,1) > = '七 ' then 'Q '
when substring(@str,@intLen,1) > = '妑 ' then 'P '
when substring(@str,@intLen,1) > = '噢 ' then 'O '
when substring(@str,@intLen,1) > = '拏 ' then 'N '
when substring(@str,@intLen,1) > = '嘸 ' then 'M '
when substring(@str,@intLen,1) > = '垃 ' then 'L '
when substring(@str,@intLen,1) > = '咔 ' then 'K '
when substring(@str,@intLen,1) > = '丌 ' then 'J '
when substring(@str,@intLen,1) > = '铪 ' then 'H '
when substring(@str,@intLen,1) > = '旮 ' then 'G '
when substring(@str,@intLen,1) > = '发 ' then 'F '
when substring(@str,@intLen,1) > = '妸 ' then 'E '
when substring(@str,@intLen,1) > = '咑 ' then 'D '
when substring(@str,@intLen,1) > = '嚓 ' then 'C '
when substring(@str,@intLen,1) > = '八 ' then 'B '
when substring(@str,@intLen,1) > = '吖 ' then 'A '
else rtrim(ltrim(substring(@str,@intLen,1)))
end

--对于汉字特殊字符,不生成拼音码
if (ascii(@temp)> 127) set @temp = ' '

--对于英文中小括号,不生成拼音码
if @temp = '( ' or @temp = ') ' set @temp = ' '

select @strRet = @temp + @strRet

set @intLen = @intLen - 1
end

return lower(@strRet)

/*
--生成临时表模式,效率可能相对较低!!!
--但是在查询分析器中,执行用临时表和不用临时表两种方法生成3000条记录费用名称的拼音码时,效率是一样的!!!



declare @t table
(
chrnchar(1) collate Chinese_PRC_CI_AS,
letternchar(1)
)

insert into @t(chr, letter)
select '吖 ', 'A ' union all
select '八 ', 'B ' union all
select '嚓 ', 'C ' union all
select '咑 ', 'D ' union all
select '妸 ', 'E ' union all
select '发 ', 'F ' union all
select '旮 ', 'G ' union all
select '铪 ', 'H ' union all
select '丌 ', 'J ' union all
select '咔 ', 'K ' union all
select '垃 ', 'L ' union all
select '嘸 ', 'M ' union all
select '拏 ', 'N ' union all
select '噢 ', 'O ' union all
select '妑 ', 'P ' union all
select '七 ', 'Q ' union all
select '呥 ', 'R ' union all
select '仨 ', 'S ' union all
select '他 ', 'T ' union all
select '屲 ', 'W ' union all
select '夕 ', 'X ' union all
select '丫 ', 'Y ' union all
select '帀 ', 'Z '

select @intLen = len(@str), @strRet = ' '
while @intLen > 0
begin
select top 1 @strRet = letter + @strRet, @intLen = @intLen - 1
from @t a
where chr <= substring(@str, @intLen, 1)
order by chr desc

if @@rowcount = 0
select @strRet = substring(@str, @intLen, 1) + @strRet, @intLen = @intLen - 1
end

return (lower(@strRet))
*/

end


热点排行