我的机器人男友橙子雨:“悬赏50分”当查找的关键字是指定字段中的一部分,sql查询语句该怎么写??

来源:百度文库 编辑:高校问答 时间:2024/05/06 21:50:23
比如说字段“组合”,有如下记录:
组合字母 组合数字
第一行:“abc|bcd|cde|def……”“123|234|345|456……”
第二行:“hij|ijk|jkl|klm……”“8910|91011|101112|111213……”
…………………………
…………………………
…………………………
如上所示,“|”是分隔符。
现在我查询“cde”,要求除了返回“组合字母”中的cde,还要求返回对应位置的“345”(因为“cde”是“字母组合”中的第3个,所以返回“数字组合”中的第3个,即“345”)。
这个sql查询语句该怎么写呢??在sql2000中。
这么说吧:我输入查询关键字cde,要求能返回cde和345,这个sql查询语句怎么写???

晕,你建一个表把数据IMPUT到表里就行啦,然后select第三列的列名就行啦..

因为你的第一列和第二列是对应的关系.
如果你在第一列中找到你要找到的组合(因为是对应的关系,所以他们的|的数量也该是相等的),也就是说你只要在第一列里找到,哪么在第二列中也就能找到了.
我是这么想的,不知道能不能帮你.

能不能清处一点.

tai hao l

写了个存储过程,你看一下。应该能达到你的要求。
create Procedure pro_temp
(@str varchar(10))--你要查询的组合字母列的字符串
as
if object_id('tempdb..#temp') is not null drop table #temp

declare @tempa varchar(100)
,@tempb varchar(100)
,@strtemp varchar(12)

set @strtemp = ('%'+@str+'%')
set @tempa = (select a from table1 WHERE A LIKE @strtemp)
set @tempb = (select b from table1 WHERE A LIKE @strtemp)
SELECT a ,b into #temp FROM TABLE1 WHERE A LIKE @strtemp

while @tempa <> ''
begin
if CHARINDEX('|' ,@tempa) = 0
begin
Insert into #temp(a, b) values(@tempa ,@tempb)
break
end
Insert into #temp(a, b) values(left(@tempa,CHARINDEX('|' ,@tempa)-1) , left(@tempb,CHARINDEX('|' ,@tempb)-1))
set @tempa = substring(@tempa, CHARINDEX('|' ,@tempa)+1,len(@tempa))
set @tempb = substring(@tempb, CHARINDEX('|' ,@tempb)+1,len(@tempb))
end
select * from #temp where a = @str

drop table #temp

然后执行:
exec pro_temp 'cde'

显示结果:
a b
----- -------
cde 345