日期:2014-05-18  浏览次数:20448 次

这个语句大家看怎么写?
表中字段contents存储的是文章,我需要用语句识别出来,这篇文章是属于那个地区的。其中info表是文章表,diqu表是存储地区的表。用这个下面的语句能实现要的效果,但是不是太精确。因为文章字段contents可能含有多个地区。
我想可以这样,取那个地区出现次数最多的为其地区,或者有多个地区的就按全国处理?大家看这个语句怎么写。
各位高手看看。select   t.contents,d.dq
from   info   t
join   diqu   d   on   charindex(d.dq,convert(varchar(8000),t.contents))   > 0     and   intime> '2007-8-24 '   order   by   title


--------------------
表diqu
21辽宁
22吉林
23黑龙江
31上海
32江苏
33浙江
34安徽
35福建
36江西

表info
title   广西调整企业退休人员基本养老金 
contents   8月27日,记者从广西自治区劳动和社会保障厅获悉,我区将在一定范围内调整企业退休人员基本养老金,本次调整时间从7月1日开始。         按照规定,参加本次调整基本养老金的人员包括三类:一是2006年12月31日前已经按规定办理退休(退职)手续,并已经按月领取基本养老金的企业退休(退职)人员。二是已经参加了城镇企业职工基本养老保险,并在2006年12月31日前已经按规定办理退休(退职)手续,且已经按月领取基本养老金的企业化管理事业单位的退休(退职)人员。三是已经参加了城镇企业职工基本养老保险,并在2006年1

------解决方案--------------------
--出现次数
(len(contents)-len(REPLACE(contents,dq)))/len(dq)
------解决方案--------------------
--order by地名出现次数 desc,出现位置(先后)
select *,
(select top 1 dq
from diqu b where charindex(dq,contents)> 0
order by (len(contents)-len(REPLACE(contents,dq, ' ')))/len(dq) desc,charindex(dq,contents))[地名]
from info a