单字段存储多数据如何筛选?

lei1252094 2009-04-05 02:18:39
一个商城,商品表的字段A,该字段下储存了多个数据,比如说颜色、尺寸。颜色可能是多个、尺寸也可能是多个。
该字段的值如下:a:1,2,3;b:4,5,6;
说明下,a表示颜色、1,2,3表示值,同样的b表示尺寸,4,5,6表示值。

我现在要筛选,比如说,我要显示颜色值为3的。怎么办?怎么筛选?(PS:C#、数据库为MSSQL)

各位有嘛主意和想法的还请指点一二,非常感谢哈。
...全文
110 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lei1252094 2009-04-05
  • 打赏
  • 举报
回复
5楼啊,我要获取的是商品列表,对商品列表先整个的取出来,再一条一条的筛选?不说多的,1万条数据,在线3000人,同时操作嘛概念?
lei1252094 2009-04-05
  • 打赏
  • 举报
回复
1楼没看题,2楼的,你这样一条一条的筛选,如果你有1万的数据量,你要耗费多少时间?

3楼非常感谢。

4楼非常感谢,提醒了我用正则。

各位还有没其它更好的方法呢?恳请指点一二。
zftow110 2009-04-05
  • 打赏
  • 举报
回复
数据取出来再用分拆吧,split(",")
Steve 2009-04-05
  • 打赏
  • 举报
回复
楼上的没法区分33, 13
被查找的或者在a的头,或者在a尾,或者在a中间

对这3种情况用dbo.RegexMatch正则表达来查询.

where dbo.RegexMatch(A, N'.+a:3,.+')=0
OR dbo.RegexMatch(A, N'.+a:.+,3;.+')=0
OR dbo.RegexMatch(A, N'.+a:.+,3,.+')=0

当然在a头的用LIKE也可以
teerhu 2009-04-05
  • 打赏
  • 举报
回复
create table test
(f1 varchar(100) not null)

insert into test values('a:1,2,3;b:4,5,6;')
insert into test values('a:1,2;b:4,5,6;')
insert into test values('a:2,3;b:5,6;')

select * from test where charindex('3',f1)>0
drop table test
l413279014 2009-04-05
  • 打赏
  • 举报
回复
保存的时候有规律吗
是按顺序保存的话先查出这个字段,然后用split(";")拆分成字符串数组,这样一个字符串就对应一项数据了
然后对每个字符串再用split(",")拆分出里面的数据
waitwarwolf 2009-04-05
  • 打赏
  • 举报
回复
用sql语句啊,select * from 表名 where a=3

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧