仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 858|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL教程之拼音处置

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:18:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功拼音
/*-1.-取得汉字字符串的首字母

依据鼎力的贴子改成.将鼎力的两个函数兼并成了一个函数.
能够使用于助记码的查询
--*/
ifexists(select*fromdbo.sysobjectswhereid=object_id(N[dbo].[fGetPy])andxtypein(NFN,NIF,NTF))
dropfunction[dbo].[fGetPy]
GO

--创立取拼音函数
createfunctionfGetPy(@Strvarchar(500)=)
returnsvarchar(500)
as
begin
declare@strlenint,@returnvarchar(500),@iiint
declare@nint,@cchar(1),@chnnchar(1)

select@strlen=len(@str),@return=,@ii=0
set@ii=0
while@ii<@strlen
begin
select@ii=@ii+1,@n=63,@chn=substring(@str,@ii,1)
if@chn>z
select@n=@n+1
,@c=casechnwhen@chnthenchar(@n)else@cend
from(
selecttop27*from(
selectchn=吖
unionallselect八
unionallselect嚓
unionallselect
unionallselect
unionallselect发
unionallselect旮
unionallselect铪
unionallselect丌--becausehavenoi
unionallselect丌
unionallselect咔
unionallselect垃
unionallselect`
unionallselect
unionallselect噢
unionallselectr
unionallselect七
unionallselect
unionallselect仨
unionallselect他
unionallselect--nou
unionallselect--nov
unionallselect
unionallselect夕
unionallselect丫
unionallselect
unionallselect@chn)asa
orderbychnCOLLATEChinese_PRC_CI_AS
)asb
elseset@c=a
set@return=@return+@c
end
return(@return)
end

go
--测试
selectdbo.fgetpy(东莞市)as东莞市,dbo.fgetpy(ab中c国人)as中国人

--删除拼音函数
dropfunctionfgetpy





/*2.--取得汉字拼音的函数

必要创立一个拼音表,包括一切汉字的发音,这个能够经由过程转换全拼输出法的编码库失掉,这里仅举了一个复杂的例子.
--*/

--创立汉字拼音库
createtableYingShe(CHRchar(2),PYvarchar(10))
insertYingShe
select长,chang
unionallselect长,zhang
unionallselect城,cheng
unionallselect科,kel
unionallselect技,ji
unionallselect金,jin
unionallselect立,li
unionallselect章,zhang
unionallselect公,gong
unionallselect司,si

/*--上面是两个函数,一个以表的情势前往某个字符串的全体拼音,一个前往某某个字符串的个中一个拼音
--*/

--猎取汉字拼音的函数--前往一切的拼音
createfunctionf_getpy_tb(@strvarchar(100))
returns@tbtable(revarchar(8000))
as
begin
declare@retable(idint,revarchar(8000))--数据处置两头表

declare@iint,@ilenint,@splitchrvarchar(1)
select@splitchr=--两个拼音之间的分开符(目标是为了通用性思索)
,@i=1,@ilen=len(@str)

insertinto@reselect@i,pyfromYingShewherechr=substring(@str,@i,1)
while@i<@ilen
begin
set@i=@i+1
insertinto@reselect@i,re+@splitchr+pyfrom@rea,YingSheb
wherea.id=@i-1andb.chr=substring(@str,@i,1)
end

insertinto@tbselectrefrom@rewhereid=@i
return
end
go

--猎取汉字拼音的函数--前往汉字的某一个拼音
createfunctionf_getpy(@strvarchar(100))
returnsvarchar(8000)
as
begin
declare@revarchar(8000)

declare@iint,@ilenint,@splitchrvarchar(1)
select@splitchr=--两个拼音之间的分开符(目标是为了通用性思索)
,@i=1,@ilen=len(@str)

select@re=pyfromYingShewherechr=substring(@str,@i,1)
while@i<@ilen
begin
set@i=@i+1
selecttop1@re=@re+@splitchr+py
fromYingShewherechr=substring(@str,@i,1)
end

return(@re)
end
go

--测试
--前往长城的一切大概拼音
select*fromdbo.f_getpy_tb(长城)

--前往长城的拼音
selectdbo.f_getpy(长城)

--删除拼音函数
dropfunctionf_getpy,f_getpy_tb




MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。
柔情似水 该用户已被删除
沙发
发表于 2015-1-24 13:45:51 | 只看该作者
我个人认为就是孜孜不懈的学习
小魔女 该用户已被删除
板凳
发表于 2015-2-1 16:17:22 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-7 08:23:46 | 只看该作者
无法深入到数据库系统层面去了解和探究
再现理想 该用户已被删除
5#
发表于 2015-2-21 06:29:49 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
小女巫 该用户已被删除
6#
发表于 2015-3-6 19:58:07 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-13 07:09:52 | 只看该作者
很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
谁可相欹 该用户已被删除
8#
发表于 2015-3-20 16:41:27 | 只看该作者
不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表