仓酷云

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

[学习教程] MSSQL教程之取得汉字字符串的首字母(T-SQL函数)

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

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

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

x
优化的SQL查询算法,有效地提高查询速度函数|汉字|字符串/*--取得汉字字符串的首字母--*/
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--while轮回入手下手
select@ii=@ii+1,@n=63,@chn=substring(@str,@ii,1)

if@chn>z--if入手下手
--此处只要一个select语句,道理以“字符串排序和ASCII码表”:
select@n=@n+1,@c=--★★★select★★★
casechn--case入手下手
when@chnthenchar(@n)--case分支
else@c--case分支
end--case停止
from(--★★★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

else--if对应的else
set@c=@chn
--if停止
set@return=@return+@c
end--while轮回停止

return(@return)
end--函数完成停止
go
--测试
selectdbo.fgetpy(魏保光)as姓名拼音,dbo.fgetpy(ab中c国人)as中国人
selectdbo.fgetpy(刘子良)as姓名拼音,dbo.fgetpy(ab中c国人)as中国人
selectdbo.fgetpy(吴过)as姓名拼音,dbo.fgetpy(ab中c国人)as中国人
selectdbo.fgetpy(西南)as姓名拼音,dbo.fgetpy(ab中c国人)as中国人
selectdbo.fgetpy(王年夜海八丫)as王年夜海八丫,dbo.fgetpy(服盏D)as服盏D
--删除拼音函数
dropfunctionfgetpy
因此我们的方案中要构造这种逆操作。Event_type增加一种FlashBACK_EVENT。这类操作形式与Query_Event相同,都是简单的SQL语句,只是包含了将数据恢复的操作。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-19 10:18:47 | 只看该作者
大家注意一点。如下面的例子:
爱飞 该用户已被删除
板凳
发表于 2015-1-24 15:01:23 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
小女巫 该用户已被删除
地板
发表于 2015-2-1 17:29:33 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
活着的死人 该用户已被删除
5#
发表于 2015-2-7 13:01:07 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-21 22:37:43 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
金色的骷髅 该用户已被删除
7#
发表于 2015-3-6 22:23:52 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
简单生活 该用户已被删除
8#
发表于 2015-3-13 22:10:01 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
admin 该用户已被删除
9#
发表于 2015-3-20 20:56:47 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 23:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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