日期:2014-05-17  浏览次数:20513 次

SQL SERVER
 数据库字段中,用户的类型是一串ID组成的字符串如(11,12,30)。显示的结果是
 用户名  |类型名称1,类型名称2...|
 一般像(11,12,30)这种形式存储的字段怎么处理的?
SQL?Server

------解决方案--------------------
引用:
declare @id int set @id=11
select * from tablename where charindex(','+ltrim(@id)+',',','+colname+',')>0

这个是查询某一个类别下的数据。
如果数据结构设计的合理的话,可以使用like '类别%',可以使用索引。
类别的编号如下所示:(编码对应的长度根据实际的业务进行设计)
跟级别(00)
  一级1(0000)
       二级1(000000)
       二级2(000001)
       二级3(000002)
   一级2(0001)
       二级1(000100)
       二级2(000101)
       二级3(000102)
------解决方案--------------------
hey jude,

一般是这种存储方法,用in拼个动态sql

declare @s varchar(1000),@ID varchar(100)
set @id = '11,12,30'
set @s = 'select * from table_name where ID in('+@id+')'
exec(@s)

不过不建议用这个方式,做关联的时候非常麻烦,还要拆分字符串。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

declare @id int set @id=11
select * from tablename where charindex(','+ltrim(@id)+',',','+colname+',')>0

这个是查询某一个类别下的数据。
如果数据结构设计的合理的话,可以使用like '类别%',可以使用索引。
类别的编号如下所示:(编码对应的长度根据实际的业务进行设计)
跟级别(00)
  一级1(0000)
       二级1(000000)
       二级2(000001)
       二级3(000002)
   一级2(0001)
       二级1(000100)
       二级2(000101)
       二级3(000102)
 谢谢 我那些类别是用的id啊 我用函数把(1,4,6)。拆成了一个表格了
1
4
6.
但是我不知道怎么和那个用户表关联啊。
用户表结构
用户名,经营类别
张三 1,4,6

如果你已经拆分好了,直接使用in('1','2') 就OK了