select name,1,len(name) from zhuisuos
where name like @str+'%'
insert into #result
select name,2,len(name) from zhuisuos
where name like '%'+@str+'%' and name not like @str+'%'
insert into #result
select name,3,len(name) from zhuisuos
where dbo.fn_getpy1 (name) like @str+'%' and name not like @str+'%' and name not like '%'+@str+'%'
insert into #result
select name,4,len(name) from zhuisuos
where dbo.fn_getpy1 (name) like '%'+@str+'%' and dbo.fn_getpy1 (name) not like @str+'%'
and name not like @str+'%' and name not like '%'+@str+'%'
select name from #result
order by id,lens
drop table #result
这个解决方案已经满足查询要求
其它都不管 我们重点来看看这次写的这个函数
象这样的汉字转拼音函数在网上一搜一大把 今天我就要举例几个方案让大家对优化及开销有个清楚的概念
解决方案一写的函数实在是太糟糕了(以上及接下来举出的案例并无冒犯任何雷同及原创代码之意,还请多多包涵)
为什么这么说呢

这是它的执行计划
它用了临时表并且排序
表插入开销0.01 表扫描开销0.003 表排序0.011
估计总开销0.0246
实际执行:我拿1万行数据调用此函数花了我20几秒、一个查询操作你愿意等20多秒吗
所以看到这样的执行计划实在很抱歉
解决方案二
create function [dbo].[fn_getpy2](@Str varchar(500)='')
returns varchar(500)
as
begin
declare @strlen int,@return varchar(500),@ii int
declare @n int,@c char(1),@chn nchar(1)
select @strlen=len(@str),
摘自:pcenshao blog