declare @tb table(id int,name varchar(10),tag text)
insert into @tb
select 1,'11111','ABC,DEF,HIJ' UNION ALL
SELECT 2,'22222','OPQ,RST' UNION ALL
SELECT 3,'33333','UVW,XYZ'Select ID,Name From @tb Where
CHARINDEX(',ABC,',','+CONVERT(VARCHAR(8000),Tag)+',')>0
OR CHARINDEX(',XYZ,',','+CONVERT(VARCHAR(8000),Tag)+',')>0
OR CHARINDEX(',OPQ,',','+CONVERT(VARCHAR(8000),Tag)+',')>0
你先看看你输出的SQL 语句是什么,肯定不是:
Select ID,Name From [Tabel] Where Tag Like '%ABC%' Or Tag Like '%XYZ %' Or Tag Like '%OPQ%' order by ID DESC
-- Author :fredrickhu(小F 向高手学习)
-- Date :2009-06-16 23:34:16
----------------------------------------------------------------
--> 测试数据:[ta]
if object_id('[ta]') is not null drop table [ta]
create table [ta]([ID] varchar(2),[Name] int,[Tag] varchar(7),[C4] varchar(4))
insert [ta]
select '1',11111,'ABC,DEF',',HIJ' union all
select '2',22222,'OPQ,RST',null union all
select '3',33333,'UVW,XYZ',null union all
select 'go',null,null,null
--------------开始查询--------------------------Select [ID],Name From [Ta] Where Tag Like '%ABC%' Or Tag Like '%XYZ%' Or Tag Like '%OPQ%' order by ID DESC
----------------结果----------------------------
/*ID name
3 33333
2 22222
1 11111
*/
这要求程序中输出时是以上形式。你打印下拼成的字符串看看。
完整的SQL语句是:"Select ID,Name From [Tabel] Where Tag Like '%ABC%' Or Tag Like '% XYZ%' Or Tag Like '% OPQ%' order by ID DESC"
(
id INT,
name VARCHAR(10),
tag TEXT
)
INSERT @t SELECT 1,'11111','ABC,DEF,HIJ'
UNION ALL SELECT 2,'22222','OPQ,RST'
UNION ALL SELECT 3,'33333','UVW,XYZ'SELECT a.*
FROM @t a
INNER JOIN
(
SELECT 'ABC' x
UNION ALL SELECT 'XYZ'
UNION ALL SELECT 'OPQ'
) b
ON CHARINDEX(x,tag)>0