求一模糊查询语句!谢谢!

blf19821013 2009-08-31 06:45:05
正做站内搜索,在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 + "%'";
...全文
223 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
t240034137 2009-09-01
  • 打赏
  • 举报
回复
回家没网络。。。。。。。。。今天早上才看见 是一个ASP.NET的问题!
  • 打赏
  • 举报
回复
来晚了,不过我对楼主解决 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突。" 这个问题蛮感兴趣的
xupeihuagudulei 2009-09-01
  • 打赏
  • 举报
回复
晚上扫帖
blf19821013 2009-08-31
  • 打赏
  • 举报
回复
恩,刚测试了下,通过了,谢谢各位帮忙啊,尤其是小爱.
华夏小卒 2009-08-31
  • 打赏
  • 举报
回复



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 行受影响)
黄_瓜 2009-08-31
  • 打赏
  • 举报
回复
想要什么结果?
--> 测试数据:[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 行受影响)


*/
blf19821013 2009-08-31
  • 打赏
  • 举报
回复
我想对两个表进行模糊查询,比如说查询关键字带"阀"字的,只显示 隔膜阀和止回阀,但我用上面的查询语句得不到我想要的结果,而是出来好多无关的.

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 卫生级
guguda2008 2009-08-31
  • 打赏
  • 举报
回复
答题基本靠猜,大家加油
SQL77 2009-08-31
  • 打赏
  • 举报
回复
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] + '%''')

要不然改成动态试试?????
SQL77 2009-08-31
  • 打赏
  • 举报
回复
"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
SQL77 2009-08-31
  • 打赏
  • 举报
回复
"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 + '"%'"; 
???
blf19821013 2009-08-31
  • 打赏
  • 举报
回复

小爱的意思是把数据表做个截图传上来??是这样给出数据吧?
我比较弱啊.
华夏小卒 2009-08-31
  • 打赏
  • 举报
回复
把sqlstr 显示出来,看看,就知道问题在哪了
黄_瓜 2009-08-31
  • 打赏
  • 举报
回复
给出数据和想要的结果
blf19821013 2009-08-31
  • 打赏
  • 举报
回复
不好意思啊,刚回来看帖子.
第二个问题已经解决了,第一个表有几个列的排序规则跟数据库默认的设置不一样,我刚改过来了.但第一个问题还是没成功,下面是我刚用的模糊查询语句.

string sqlstr = "select * from Table_chanpin union select * from Table_chanpin2 where 名称 like '%" + key + "%'";
黄_瓜 2009-08-31
  • 打赏
  • 举报
回复
楼主在不?
华夏小卒 2009-08-31
  • 打赏
  • 举报
回复
key 是变量?

在报错之前,把sqlstr 显示出来,看看,就知道问题在哪了
fanzhouqi 2009-08-31
  • 打赏
  • 举报
回复
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 + "%'"; 

在语法上,没看出错误
黄_瓜 2009-08-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 blf19821013 的回复:]
是下面这样吧?刚试了下,不行.

string sqlstr = "select * from Table_chanpin union select * from Table_chanpin2 where 名称 like '%" + key + "%' collate Chinese_PRC_CI_AS";
[/Quote]
你建的表都用了什么排序规则?
不行提示什么错误???
--小F-- 2009-08-31
  • 打赏
  • 举报
回复
楼主给点数据给我们
加载更多回复(4)

22,209

社区成员

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

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