有一表结构: 编号 指定人 时间 id assign time 记录 001 test .. 002 test,test1 ... 003 test1,test2 ... 现在想从中选出指定人(assign)包含test值的记录,即想选出001和002记录来,这个sql 的条件怎么写,请大虾赐教,谢谢!select * from dtl where ...... ?
select * from dtl where assign = 'test' or assign like 'test,%' or assign like '%,test' or assign like '%,test,%'
select * from dtl where charindex(','+'test'+',' , ','+assign+',')>0
有一表结构: 编号 指定人 时间 id assign time 记录 001 test .. 002 test,test1 ... 003 test1,test2 ... 方法一: select * from tb where ','+指定人+',' like '%,test,%'方法二: select * from tb where charindex(',test,' , ','+指定人+',') > 0
create table tb( 编号 varchar(10),指定人 varchar(20),时间 datetime) insert into tb values('001','test',null) insert into tb values('002','test,test1',null) insert into tb values('003','test1,test2',null) go --方法一: select * from tb where ','+指定人+',' like '%,test,%' /* 编号 指定人 时间 ---------- -------------------- ------------------------------------------------------ 001 test NULL 002 test,test1 NULL(所影响的行数为 2 行) */ --方法二: select * from tb where charindex(',test,' , ','+指定人+',') > 0 /* 编号 指定人 时间 ---------- -------------------- ------------------------------------------------------ 001 test NULL 002 test,test1 NULL(所影响的行数为 2 行) */ drop table tb
select * from tb where contains(assign,'test') or contains(assign,',test') or contains(assign,'test,')
我用的是Oracle数据库,为什么用不了contains 和 charindex 运算符只有 select * from dtl where assign = 'test ' or assign like 'test,% ' or assign like '%,test ' or assign like '%,test,% ' 语句是对的找到答案就行,谢谢楼上几位
where assign = 'test' or assign like 'test,%' or assign like '%,test' or assign like '%,test,%'
select * from dtl where charindex(','+'test'+',' , ','+assign+',')>0
编号 指定人 时间
id assign time
记录 001 test ..
002 test,test1 ...
003 test1,test2 ... 方法一:
select * from tb where ','+指定人+',' like '%,test,%'方法二:
select * from tb where charindex(',test,' , ','+指定人+',') > 0
insert into tb values('001','test',null)
insert into tb values('002','test,test1',null)
insert into tb values('003','test1,test2',null)
go
--方法一:
select * from tb where ','+指定人+',' like '%,test,%'
/*
编号 指定人 时间
---------- -------------------- ------------------------------------------------------
001 test NULL
002 test,test1 NULL(所影响的行数为 2 行)
*/
--方法二:
select * from tb where charindex(',test,' , ','+指定人+',') > 0
/*
编号 指定人 时间
---------- -------------------- ------------------------------------------------------
001 test NULL
002 test,test1 NULL(所影响的行数为 2 行)
*/
drop table tb
contains(assign,'test') or contains(assign,',test') or contains(assign,'test,')
我用的是Oracle数据库,为什么用不了contains 和 charindex 运算符只有
select * from dtl
where assign = 'test ' or assign like 'test,% ' or assign like '%,test ' or assign like '%,test,% '
语句是对的找到答案就行,谢谢楼上几位