[SQL]权限匹配查询

lzjunika 2007-10-29 02:47:21
表tb中有两个字段(code,value)
code value
1   01,02,03
2   04,05

如何找出value中含有'02'的记录,(注:'0201'也属于'02',但不属于'01',就是要求首字符对应)。

精确查询的话用这句可以实现(找'02'):
select * from tb where charindex('02',value,1)>0
但模糊查询的话就不知道应该怎么找好了(比如找'0201',它是属于'02'的)
恳请有相关经验的赐教!
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2007-10-29
  • 打赏
  • 举报
回复
select * from t where charindex( ',02 ', ','+value)>0
go
用以上生成函数表时:
select * from t where exists(select 1 from 函数名 where value='02' and code=t.code)
cxmcxm 2007-10-29
  • 打赏
  • 举报
回复
用逗号作标志02与value前各加一逗号
select * from tb where charindex( ',02',''''+value,1) >0
中国风 2007-10-29
  • 打赏
  • 举报
回复
当然也可以 把#临时表生成一个表,用函数实现。。函数用以上方法抽换作函数就OK了
中国风 2007-10-29
  • 打赏
  • 举报
回复
use Test
go
create table T(code int,value nvarchar(20))
insert T select 1,'01,02,03'
insert T select 2,'04,05'
go

select top 100 ID=identity(int,1,1) into # from sysobjects a ,syscolumns b--辅助表
go

select
T.code,[value]=substring([value],ID,charindex(',',[value]+',',ID)-ID)
from
T
cross join
# T2
where

ID<=(len(value+','))and
charindex(',',','+value,ID)=ID

code value
----------- --------------------
1 01
1 02
1 03
2 04
2 05

(所影响的行数为 5 行)

internetroot 2007-10-29
  • 打赏
  • 举报
回复
为什么不把表这样设计
code value
1   01
1   02
1   03
2   04
2   05

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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