日期:2014-05-18  浏览次数:20631 次

要给一批词组编码该怎么做,该用函数还是用游标?

表1
字     编码
我     wo
们     meng
的     de

怎样给表2中的词组编码(从表1中查询),二个字,各取2码;三个字,各取第1、2个字第1码+第三字前2码;四个字取每个字的第1码,例如:

表2
词组         编码
我们         wome
我们的     wmde

------解决方案--------------------
建议用函数
------解决方案--------------------
--try

create table T1(字 varchar(10), 编码 varchar(10))
insert T1 select '我 ', 'wo '
union all select '们 ', 'meng '
union all select '的 ', 'de '

create table T2(词组 varchar(10))
insert T2 select '我们 '
union all select '我们的 '

create function fun(@词组 varchar(10))
returns varchar(10)
as
begin
declare @re varchar(10)
set @re= ' '

if len(@词组)=2
begin
select @re=@re+编码 from T1 where 字=substring(@词组, 1, 1)
select @re=@re+编码 from T1 where 字=substring(@词组, 2, 1)
end

if len(@词组)=3
begin
select @re=@re+left(编码,1) from T1 where 字=substring(@词组, 1, 1)
select @re=@re+left(编码,1) from T1 where 字=substring(@词组, 2, 1)
select @re=@re+编码 from T1 where 字=substring(@词组, 3, 1)
end

if len(@词组)=4
begin
select @re=@re+left(编码,1) from T1 where 字=substring(@词组, 1, 1)
select @re=@re+left(编码,1) from T1 where 字=substring(@词组, 2, 1)
select @re=@re+left(编码,1) from T1 where 字=substring(@词组, 3, 1)
select @re=@re+left(编码,1) from T1 where 字=substring(@词组, 4, 1)
end

return @re
end


select 词组, 编码=dbo.fun(词组) from T2