第2题:
表a:
北京
上海
天津
广东
表a记录700条表b
content varchar(8000)
表b的记录1000条
如何将content与表a匹配,如果content中有表a的记录,就返回,
如果content中有表a的记录符合的越多,返回的记录排序就越排前面
表a:
北京
上海
天津
广东
表a记录700条表b
content varchar(8000)
表b的记录1000条
如何将content与表a匹配,如果content中有表a的记录,就返回,
如果content中有表a的记录符合的越多,返回的记录排序就越排前面
解决方案 »
- 求sql command 將兩個table之資料連結,謝謝
- update 表1的字段B='aa',字段c='bb',当表1字段A的值=表2字段A的值
- 如何实现增加记录时,如果字段A给了值,则字段B自动取字段A的值。
- 数据库表的字段值被改,如何恢复和查原因
- 这个效果怎么实现!!
- 谁能帮我修改这条简单的sql语句,让它能在vb+ado环境下运行?
- 如何给select的结果添加一列标识?
- 如何在存储过程中进行两个游标的嵌套循环,详见代码
- oracle中,我不小心回收了system的权限,怎么办,进不去了?
- SQL Server、Oracle,它们可以安装在Windows 98上吗?
- sql server 2000安装时候失败.
- 在存储过程里能锁定记录吗?
select * from 表a where '我们要到祖国的首都北京去' like ('%' + place + '%')
select
t.place,
sum(case when content like('%' + place + '%') then 1 else 0 end)as ct
from
(select * from @a,@b)t
group by place
order by ct desc
:第2题也非常简洁,我老想的是循环.有个问题是select * from @a,@b,我用我的数据测试了下会产生2800000条记录,要2分钟,如是完整运行语句,返回了800条记录,要用7分钟,如何才能提高效率?
如果 '我们要到祖国的首都北京北京去' ,统计北京时算几个?要是就算一个的话,
就用现在的方法就可以,如果算2个的话,
就要参照你这篇我的回复:“sql的字符处理的问题,有点难”
就用现在的方法就可以.
可以不统计.2题如何将content与表a匹配,如果content中有表a的记录,就返回,不处理排序.如何做,效率能不能快点?
-----------------------------------------------------------------------------------
declare @a table(city varchar(10))
insert into @a select '北京'
insert into @a select '上海'
insert into @a select '天津'
insert into @a select '广东'declare @b table(content varchar(40))
insert into @b select '我们要到祖国的首都北京去'
insert into @b select '我们要到北京和上海去'
insert into @b select '我们要到北京、上海和广东去'
insert into @b select '我们要到祖国的西藏去'select
b.content,isnull(count(a.city),0) as num
from
@b b
left join
@a a
on
charindex(a.city,b.content)>0
group by
b.content
order by
isnull(count(a.city),0) desc/*
content num
---------------------------------------- -----------
我们要到北京、上海和广东去 3
我们要到北京和上海去 2
我们要到祖国的首都北京去 1
我们要到祖国的西藏去 0
*/
最关键的是content这个字段不能建立索引。因为长度太长了
个人观点。