正做站内搜索,在search.aspx页面接收从首页传来的值key,对名称列进行模糊查询.请各位帮忙解决下,都折腾了两小时了! 问题一: 
求各位帮写一模糊查询语句,谢谢! 两个表Table_chanpin,Table_chanpin2. 
字段都一样, 
ID  int型; 
名称  nvarchar(50) 
产品简介  nvarchar(max) 
图片名称  nvarchar(50) 
上传时间  datetime 
photoinfo  nvarchar(max) 
下面是我写的语句,查询的不准确.而且似乎没有删除重复行啊. 
string sqlstr = "select distinct a.名称,b.名称,a.ID,b.ID,a.上传时间,b.上传时间,a.photoinfo,b.photoinfo from Table_chanpin a, Table_chanpin2 b where a.名称 like '%" + key + "%' or b.名称 like '%" + key + "%'"; 
问题二: 
我用下面这个查询语句的时候,报错了,提示:"无法解决 UNION 操作中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突。" 
我的数据库用的都是Chinese_PRC_CI_AS规则,没用到另外一种啊,怎么会冲突呢?请教! string sqlstr = "select * from Table_chanpin union select * from Table_chanpin2 where 名称 like '%" + key + "%'";

解决方案 »

  1.   

    select * from Table_chanpin 
    union select * from Table_chanpin2 where 名称 like '%" + key + "%'"
    collate Chinese_PRC_CI_AS--试试
      

  2.   

    是下面这样吧?刚试了下,不行.string sqlstr = "select * from Table_chanpin union select * from Table_chanpin2 where 名称 like '%" + key + "%' collate Chinese_PRC_CI_AS";
      

  3.   

    string sqlstr = "select distinct a.名称,b.名称,a.ID,b.ID,a.上传时间,b.上传时间,a.photoinfo,b.photoinfo from Table_chanpin a, Table_chanpin2 b where a.名称 like '%" + key + "%' or b.名称 like '%" + key + "%'"; 在语法上,没看出错误
      

  4.   

    key 是变量?在报错之前,把sqlstr 显示出来,看看,就知道问题在哪了
      

  5.   

    不好意思啊,刚回来看帖子.
    第二个问题已经解决了,第一个表有几个列的排序规则跟数据库默认的设置不一样,我刚改过来了.但第一个问题还是没成功,下面是我刚用的模糊查询语句.string sqlstr = "select * from Table_chanpin union select * from Table_chanpin2 where 名称 like '%" + key + "%'"; 
      

  6.   

    把sqlstr 显示出来,看看,就知道问题在哪了
      

  7.   

    "select distinct a.名称,b.名称,a.ID,b.ID,a.上传时间,b.上传时间,a.photoinfo,b.photoinfo from Table_chanpin a, Table_chanpin2 b where a.名称 like '%"' + key + '"%' or b.名称 like '%"' + key + '"%'"; ???
      

  8.   

    "select distinct a.名称,b.名称,a.ID,b.ID,a.上传时间,b.上传时间,a.photoinfo,b.photoinfo from Table_chanpin a, Table_chanpin2 b where a.名称 like '%'" + key + "'%' or b.名称 like '%'" + key + "'%'";]要不然楼主改成CHARINDEX
      

  9.   

    EXEC('select distinct a.名称,b.名称,a.ID,b.ID,a.上传时间,b.上传时间,a.photoinfo,b.photoinfo from Table_chanpin a, Table_chanpin2 b where a.名称 like ''%' + [key] + '%'' or b.名称 like ''%' + [key] + '%''')
    要不然改成动态试试?????
      

  10.   

    我想对两个表进行模糊查询,比如说查询关键字带"阀"字的,只显示 隔膜阀和止回阀,但我用上面的查询语句得不到我想要的结果,而是出来好多无关的.Table_chanpin表:
    ID      名称      上传时间     photoinfo
    1        散热器    2009-8-17      好用
    2        隔膜阀    2009-8-17       真好用
    3        配液罐    2009-8-17        真好用 
    4        止回阀    2009-8-17       卫生级
    Table_chanpin2
     ID      名称      上传时间     photoinfo
    1        纯水罐    2009-8-17      好用
    2        球形浓缩罐    2009-8-17       真好用
    3        呼吸器    2009-8-17        真好用 
    4        酒精回收塔    2009-8-17       卫生级
           
      

  11.   

    想要什么结果?
    --> 测试数据:[ta]
    if object_id('[ta]') is not null drop table [ta]
    go
    create table [ta]([ID] int,[名称] varchar(6),[上传时间] datetime,[photoinfo] varchar(6))
    insert [ta]
    select 1,'散热器','2009-8-17','好用' union all
    select 2,'隔膜阀','2009-8-17','真好用' union all
    select 3,'配液罐','2009-8-17','真好用' union all
    select 4,'止回阀','2009-8-17','卫生级'select * from [ta]
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([ID] int,[名称] varchar(10),[上传时间] datetime,[photoinfo] varchar(6))
    insert [tb]
    select 1,'纯水罐','2009-8-17','好用' union all
    select 2,'球形浓缩罐','2009-8-17','真好用' union all
    select 3,'呼吸器','2009-8-17','真好用' union all
    select 4,'酒精回收塔','2009-8-17','卫生级'
    ----------------查询开始---------------------
    select  * from [ta] a where  a.名称 like '%罐%'
    union all
    select  * from [tb] b where  b.名称 like '%罐%'
    /*
    ID          名称         上传时间                    photoinfo
    ----------- ---------- ----------------------- ---------
    3           配液罐        2009-08-17 00:00:00.000 真好用
    1           纯水罐        2009-08-17 00:00:00.000 好用
    2           球形浓缩罐      2009-08-17 00:00:00.000 真好用(3 行受影响)
    */
      

  12.   


    declare @Table_chanpin table(  ID int,名称   varchar(20),上传时间 datetime, photoinfo varchar(20))
    insert @Table_chanpin select
    1 ,       '散热器'   , '2009-8-17',      '好用' union all select
    2  ,      '隔膜阀'  ,  '2009-8-17' ,     '真好用' union all select
    3   ,     '配液罐' ,   '2009-8-17'  ,      '真好用' union all select
    4    ,    '止回阀',    '2009-8-17'   ,   '卫生级' declare @key varchar(20)
    set @key='阀'select * from @Table_chanpin where 名称 like '%'+@key+'%'ID          名称                   上传时间                    photoinfo
    ----------- -------------------- ----------------------- --------------------
    2           隔膜阀                  2009-08-17 00:00:00.000 真好用
    4           止回阀                  2009-08-17 00:00:00.000 卫生级(2 行受影响)
      

  13.   

    来晚了,不过我对楼主解决 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突。" 这个问题蛮感兴趣的
      

  14.   

    回家没网络今天早上才看见 是一个ASP.NET的问题!