SQL Server中实现汉语拼音搜索
2012-11-14 14:33
134 查看
用函数实现
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_GetPy]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_GetPy]
GO
create function f_GetPy(@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @strlen int,@re nvarchar(4000)
declare @t table(chr nchar(1) collate Chinese_PRC_CI_AS,letter nchar(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 @strlen=len(@str),@re=''
while @strlen>0
begin
select top 1 @re=letter+@re,@strlen=@strlen-1
from @t a where chr<=substring(@str,@strlen,1)
order by chr desc
if @@rowcount=0
select @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1
end
return(@re)
end
go
调用时:
select username from register where dbo.f_GetPy(left(username,1)) = 'L'
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_GetPy]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_GetPy]
GO
create function f_GetPy(@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @strlen int,@re nvarchar(4000)
declare @t table(chr nchar(1) collate Chinese_PRC_CI_AS,letter nchar(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 @strlen=len(@str),@re=''
while @strlen>0
begin
select top 1 @re=letter+@re,@strlen=@strlen-1
from @t a where chr<=substring(@str,@strlen,1)
order by chr desc
if @@rowcount=0
select @re=substring(@str,@strlen,1)+@re,@strlen=@strlen-1
end
return(@re)
end
go
调用时:
select username from register where dbo.f_GetPy(left(username,1)) = 'L'
相关文章推荐
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(一)
- SQLSERVER Image类型 Hibernate 映射问题 简单实现
- SQL Server中如何实现遍历表的记录
- 在项目中迁移MS SQLServer到Mysql数据库,实现MySQL数据库的快速整合
- MS SQL Server 中如何实现一对多外键的级联更新
- ms sql server中实现的unix时间戳函数(含生成和格式化,可以和mysql兼容)
- 使用Microsoft SQL Server 2000全文搜索功能构建Web搜索应用程序 --作者:Andrew B. Cencini
- Java使用SQLServerBulkCopy实现数据库批量操作
- PLSQL(PL/SQL)集成Team Foundation Server (TFS),实现数据库代码的版本管理
- JSP+SQL SERVER实现分页
- 3大数据库(Sql-Server,MySql和Oracle)的分页SQL语句实现
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(一)
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(七)
- 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能
- SQL Server设置主键自增长列(使用sql语句实现)
- 我好朋友写的将任何一天转化为当年旬序的函数(SQL_SERVER 2000视图中实现)
- PLSQL(PL/SQL)集成Team Foundation Server (TFS),实现数据库代码的版本管理
- 利用Java+sqlserver 实现对数据库的操作
- 通过SQL Server Agent方式实现数据库自动备份!
- SQLServer Case具有两种格式:简单Case函数和Case搜索函数