动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   数据库 → 阅读文章

 字符串分拆查询

作者:无从考证 来源:不详 
阅读 数 58 人次 , 2006-2-15 17:52:00 

有这样的数据 

字段1      字段2 
2,4,23    3,6,345
23,56,4   3,3,67

取数据的是
查询 字段1中 条件是 4 那么在字段2  在取的是6与 67
结果如下
============
4     6
4     67
-------------------------------------------------------------------------------
--处理示例
--测试数据
create table tb(字段1 varchar(10),字段2 varchar(10))
insert tb select ’2,4,23’ ,’3,6,345’
union all select ’23,56,4’,’3,3,67’
go
--写个自定义函数来处理
create function f_value(
@a varchar(10),
@b varchar(10),
@c varchar(10)
)returns varchar(10)
as
begin
 declare @i int,@pos int
 
 select @a=left(@a,charindex(’,’+@c+’,’,’,’+@a+’,’)-1)
  ,@pos=len(@a)-len(replace(@a,’,’,’’))+1
  ,@i=charindex(’,’,@b)
 while @i>0 and @pos>1
  select @b=substring(@b,@i+1,8000)
   ,@i=charindex(’,’,@b)
   ,@pos=@pos-1
 return(case @pos when 1 
   then case when @i>0 then left(@b,@i-1) else @b end
   else ’’ end)
end
go
--查询
declare @a varchar(10)
set @a=’23’ --查询参数
--查询语句
select A=@a,B=dbo.f_value(字段1,字段2,@a)
from tb
go
--删除测试
drop table tb
drop function f_value
/*--测试结果
A            B          
---------- ---------- 
23         345
23         3
(所影响的行数为 2 行)
--*/   
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:数据库设计经验谈
· 下一篇:随机选择表格里的行
· 存储过程编写经验和优化措施
· SQL Server 7.0 函数及SQL语句相关问题
· SQL Server数据库技术(102)
· 使用SQL Server 7.0建立一个安全的数据库的最好方法是
· 更新你的联机丛书


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077