|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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上的中小型网站中。 |
|