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

解决方案 »

  1.   

     tmp = tmp & " Tag Like '%"&TagArry(i)&"%'" 
     你先看看你输出的SQL 语句是什么,肯定不是:
    Select ID,Name From [Tabel] Where Tag Like '%ABC%' Or Tag Like '%XYZ %'  Or Tag Like '%OPQ%' order by ID DESC 
      

  2.   

    ----------------------------------------------------------------
    -- 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
    */
      

  3.   

    数据库接受形式应该是:Select ID,Name From [Tabel] Where Tag Like '%ABC%' Or Tag Like '%XYZ %'  Or Tag Like '%OPQ%' order by ID DESC 
    这要求程序中输出时是以上形式。你打印下拼成的字符串看看。
      

  4.   

    小F格式咋那么漂亮呢,羡慕ING
      

  5.   

    谢谢大家,找到问题了是百分号后面多了一个空格
    完整的SQL语句是:"Select ID,Name From [Tabel] Where Tag Like '%ABC%' Or Tag Like '% XYZ%' Or Tag Like '% OPQ%' order by ID DESC" 
      

  6.   

    DECLARE @t TABLE 
    (
    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